Как Добавить локальный.файл зависимостей банку, чтобы построить.файл gradle?


поэтому я попытался добавить свой локальный .зависимость файла jar от моей сборки.файл gradle:

apply plugin: 'java'

sourceSets {
    main {
        java {
            srcDir 'src/model'
        }
    }
}

dependencies {
    runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
    runtime fileTree(dir: 'libs', include: '*.jar')
} 

и вы можете видеть, что я добавил .jar файлы в папку referencedLibraries здесь:https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries

но проблема в том, что когда я запускаю команду: gradle build в командной строке, я получаю следующую ошибку:

error: package com.google.gson does not exist
import com.google.gson.Gson;

вот весь мой РЕПО: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1

14 437

14 ответов:

Если вам действительно это нужно .jar из локального каталога,

добавить рядом с модулем gradle (не приложение gradle файл):

repositories {
   flatDir {
       dirs 'libs'
   }
}


dependencies {
   compile name: 'gson-2.2.4'
}

однако, будучи стандартом .jar в реальном хранилище maven, почему бы вам не попробовать это?

repositories {
   mavenCentral()
}
dependencies {
   compile 'com.google.code.gson:gson:2.2.4'
}

по данным документация, используйте относительный путь для локальной зависимости jar следующим образом:

dependencies {
    compile files('libs/something_local.jar')
}

вы также можете сделать это, которое будет включать все банки в локальном репозитории. Таким образом, вам не придется указывать его каждый раз.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

для меня работает следующее:

compile fileTree(dir: 'libs', include: '*.jar')

относятся к Gradle Documentation.

принятый ответ хорош, однако мне понадобились бы различные конфигурации библиотек в моей сборке Gradle с несколькими проектами, чтобы использовать одну и ту же стороннюю библиотеку Java.

добавить ' $rootProject.каталог_проекта' в 'реж 'элемент пути внутри моего'allprojects' закрытие означало, что каждый подпроект ссылается на одно и то же'библиотеки и не версия для суб-проекта:

//gradle.build snippet
allprojects {
    ...

    repositories {
        //All sub-projects will now refer to the same 'libs' directory
        flatDir {
            dirs "$rootProject.projectDir/libs"
        }
        mavenCentral()
    }

    ...
}

EDIT by Quizzie: changed " ${rootProject.projectDir} " to " $rootProject.projectDir " (работает в новейшей версии Gradle).

вы можете попробовать повторно использовать локальный репозиторий Maven для Gradle:

  • установите jar в локальный репозиторий Maven:

    mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar

  • проверьте, что у вас установлена банка в ваш ~/.m2/ локальный репозиторий Maven

  • включите локальный репозиторий Maven в вашем build.gradle file:

    repositories {
      mavenCentral()  
      mavenLocal()  
    }
    
    dependencies {  
      compile ("com.company:utility:0.0.1")  
    }
    
    • теперь вы должны иметь банку включена для компиляции в вашем проект

простой способ сделать это -

compile fileTree(include: ['*.jar'], dir: 'libs')

он будет составлять все .jar-файлы в вашем каталоге libs в приложении.

Я не мог получить предложение выше в https://stackoverflow.com/a/20956456/1019307 на работу. Это сработало для меня, хотя. Для файла secondstring-20030401.jar что я хранил в libs/ каталог в корне проекта:

repositories {
    mavenCentral()
    // Not everything is available in a Maven/Gradle repository.  Use a local 'libs/' directory for these.
    flatDir {
       dirs 'libs'
   }
}

...

compile name: 'secondstring-20030401'

лучший способ сделать это-добавить это в свою сборку.gradle файл и нажмите опцию синхронизации

dependency{
    compile files('path.jar')
}

на этот вопрос уже был дан подробный ответ. Я все еще хочу добавить кое-что, что кажется мне очень удивительным:

задача "gradle dependencies" не содержит никаких зависимостей файлов. Даже если вы так думаете, поскольку они были указаны в блоке "зависимости" в конце концов..

поэтому не полагайтесь на вывод этого, чтобы проверить, правильно ли работают ваши ссылки на локальные файлы lib.

решение, которое сработало для меня, - это использование fileTree в сборке.файл gradle. Оставь себе .jar, который нужно добавить в качестве зависимости в папку libs. Ниже приведен код в блоке dependenices в сборке.Gradle в:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

Goto File - > структура проекта - > модули - > приложение - > вкладка зависимости - > нажмите на +(кнопка) - > Выберите файл зависимости - > Выберите файл jar в папке lib

эти шаги автоматически добавят вашу зависимость в gralde

Очень Просто

иначе:

добавить библиотеку в виде дерева. Щелкните правой кнопкой мыши на этом. Выберите меню "Добавить как библиотеку". Появится диалоговое окно, позволяющее выбрать модуль. Хорошо, и это сделано.

будьте осторожны, если вы используете непрерывную интеграцию, вы должны добавить свои библиотеки в том же пути на вашем сервере сборки.

по этой причине я бы предпочел добавить jar в локальный репозиторий и, конечно же, сделать то же самое на сервере сборки.