Как добавить локальную зависимость .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 build в командной строке, я получаю следующую ошибку:

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

Вот мое полное репо: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1

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

Добавьте рядом с 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' } 

В соответствии с документацией используйте относительный путь для зависимости локальной банки:

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

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

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

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

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

См. Документацию Gradle .

Принятый ответ хорош, однако мне понадобились различные конфигурации библиотек в моей многопроектной сборке 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).

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

  • Установите банку в локальный repository Maven:

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

  • Убедитесь, что у вас установлена ​​банка в ваш ~/.m2/ локальный repository Maven

  • Включите локальный repository Maven в файле build.gradle :

     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' 

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

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

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

Задача «Зависимости gradleиентов» не отображает никаких зависимостей между файлами. Даже если вы так думаете, так как они были указаны в блоке «зависимости» в конце концов ..

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

Решение, которое работало для меня, – это использование файла fileTree в файле build.gradle. Сохраните .jar, который нужно добавить в зависимости от папки libs. Дайте приведенный ниже код в блоке зависимостей в файле build.gradle:

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

Перейти к файлу -> Структура проекта -> Модули -> приложение -> Вкладка «Зависимости» -> Нажмите + (кнопка) -> Выберите «Зависимость файла» -> Выберите файл jar в папке lib

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

Очень просто

Другой путь:

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

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

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

  • Как включить список списков в список в Java 8?
  • Java FileInputStream ObjectInputStream достигает конца файла EOF
  • Установка цвета фона для JFrame
  • Параметры tomcat - CATALINA_BASE и CATALINA_HOME
  • Убийство streamа после определенного срока в Java
  • Получить имя текущего исполняемого теста в JUnit 4
  • рисовать полярный график в java
  • Java: целое число равно vs. ==
  • @Transactional метод вызова другого метода без @Transactional anotation?
  • Как рассчитать истекшее время с Joda-Time?
  • Как расшифровать шифрованную строку SHA-256?
  • Давайте будем гением компьютера.