Как добавить локальную зависимость .jar файла для файла build.gradle?
Итак, я попытался добавить мою локальную зависимость .jar в файл build.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 построить в командной строке, я получаю следующую ошибку:
error: package com.google.gson does not exist
import com.google.gson.Gson;
Вот мое полное репо: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1
Ответы
Ответ 1
Если вам действительно нужно взять этот .jar из локального каталога,
Добавьте рядом с модулем Gradle (не файл приложения Gradle):
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
implementation name: 'gson-2.2.4'
}
Тем не менее, будучи стандартным .jar в реальном хранилище Maven, почему бы вам не попробовать это?
repositories {
mavenCentral()
}
dependencies {
implementation 'com.google.code.gson:gson:2.2.4'
}
Ответ 2
Согласно документации, используйте относительный путь для локальной зависимости jar следующим образом:
dependencies {
implementation files('libs/something_local.jar')
}
Ответ 3
Вы также можете сделать это, что будет включать все JAR в локальном репозитории. Таким образом, вы не должны указывать его каждый раз.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Ответ 4
Для меня работает следующее:
compile fileTree(dir: 'libs', include: '*.jar')
Обратитесь к Gradle Документация.
Ответ 5
Вы можете попробовать повторно использовать локальный репозиторий Maven для Gradle:
Установите банку в свой локальный репозиторий Maven:
mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar
Убедитесь, что у вас установлен jar файл в локальный репозиторий Maven
Включите свой локальный репозиторий Maven в своем файле build.gradle
:
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
implementation ("com.company:utility:0.0.1")
}
- Теперь у вас должен быть включен jar для реализации в вашем проекте
Ответ 6
Принятый ответ хорош, однако мне понадобилось бы несколько конфигураций библиотек в моей многопроектной компоновке Gradle для использования той же сторонней библиотеки Java.
Добавление ' $rootProject.projectDir' в элемент пути dir 'в моем закрытии allprojects означает, что каждый подпроект, на который делается ссылка тот же каталог "libs" и не вариант, локальный для этого подпроекта:
//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: изменил "$ rootProject.projectDir" на "$ rootProject.projectDir" (работает в новейшей версии Gradle).
Ответ 7
Простой способ сделать это:
compile fileTree(include: ['*.jar'], dir: 'libs')
он скомпилирует все .jar файлы в вашем каталоге libs в приложении.
Ответ 8
Я не мог получить предложенное выше предложение fooobar.com/questions/20050/.... Это работало для меня, хотя. Для файла 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'
Ответ 9
Вопрос уже был дан ответ подробно. Я все еще хочу добавить что-то, что кажется мне очень удивительным:
Задача "gradle зависимостей" не содержит никаких зависимостей между файлами. Даже если вы можете так подумать, поскольку они были указаны в блоке "dependencies" в конце концов..
Поэтому не полагайтесь на результат этого, чтобы проверить, правильно ли работают ваши локальные файлы lib.
Ответ 10
Решение, которое работало для меня, - это использование файла fileTree в файле build.gradle.
Сохраните .jar, который нужно добавить в зависимости от папки libs. Дайте приведенный ниже код в блоке зависимостей в файле build.gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Ответ 11
Решение для тех, кто использует Kotlin DSL
Добавленные решения отлично подходят для OP, но их нельзя использовать с Kotlin DSL без их предварительного перевода. Вот пример того, как я добавил локальный .JAR в свою сборку, используя Kotlin DSL:
dependencies {
compile(files("/path/to/file.jar"))
testCompile(files("/path/to/file.jar"))
testCompile("junit", "junit", "4.12")
}
Помните, что если вы используете Windows, ваши обратные слеши должны быть экранированы:
...
compile(files("C:\\path\\to\\file.jar"))
...
Также помните, что кавычки должны быть двойными, а не одинарными.
Ответ 12
Лучший способ сделать это - добавить это в свой файл build.gradle и нажать кнопку синхронизации.
dependency{
compile files('path.jar')
}
Ответ 13
Перейти к файлу → Структура проекта → Модули → Приложение → Вкладка "Зависимости" → Нажмите + (кнопка) → Выберите "Зависимость файла" → Выберите файл jar в папке lib
Эти шаги автоматически добавят вашу зависимость к gralde
Очень просто
Ответ 14
Вы можете добавить jar, выполнив:
Для gradle просто поместите следующий код в build.gradle
:
dependencies {
...
compile fileTree(dir: 'lib', includes: ['suitetalk-*0.jar'])
...
}
а для мавена просто следуйте шагам:
Для Intellij: File-> проект structure-> modules-> зависимость tab-> нажмите + sign-> jar и dependency-> выберите банки, которые вы хотите import-> ok-> применить (если они видны) ) → оК
Помните, что если у вас есть какой-либо java.lang.NoClassDefFoundError: Could not initialize class
исключение java.lang.NoClassDefFoundError: Could not initialize class
во время выполнения, это означает, что зависимости в jar не установлены, для этого вам нужно добавить все зависимости в родительский проект.
Ответ 15
Будьте внимательны, если вы используете непрерывную интеграцию, вы должны добавить свои библиотеки в один и тот же путь на сервере сборки.
По этой причине я предпочел бы добавить jar в локальный репозиторий и, конечно же, сделать то же самое на сервере сборки.
Ответ 16
Другой способ:
Добавить библиотеку в виде дерева. Щелкните правой кнопкой мыши на этом. Выберите меню "Добавить как библиотеку".
Появится диалоговое окно, позволяющее выбрать модуль. ОК и все сделано.