IntelliJ gradle добавить зависимость модуля

Использование IntelliJ 2016.2.
Использование Gradle 2.14.1

У меня есть 2 проекта, каждый со своими собственными файлами build.gradle и отдельными структурами каталогов:

myLib (meant to be jarred and used by others)
  - build.gradle
  - settings.gradle
  - src/main/java/...

sandbox (spring boot web app)
  - build.gradle
  - settings.gradle
  - src/main/java/...
  - src/main/resources/...

Надеюсь, вы получите картину. В IntelliJ у меня есть следующая структура модуля на том же уровне (без подпроектов):

- myLib
- sandbox

Простой запрос... Я хочу использовать myLib в приложении sandbox. Я хочу, чтобы оба модуля были в одном проекте для разработки обоих.

Я попытался добавить зависимость модуля к sandbox для myLib внутри IntelliJ. Нет кубиков. Я попытался добавить ссылку на банку, не кубик.

Я считаю, что мне нужно добавить зависимость в файле build.gradle, но не могу понять, как это сделать. Я пробовал compile files '<path to myLib.jar>' и т.д. Нет кубиков.

Ответ 1

Локальные Модули

За этим шаблоном следуют большинство проектов Gradle, где есть библиотека, а затем пример приложения, использующего эту библиотеку.

 - module/
    - build.gradle
    - src/main/java
 - library/
    - build.gradle
    - src/main/java
 - settings.gradle
 - build.gradle

В этом верхнем уровне settings.gradle вас есть

include ':library', ':module'

И в module/build.gradle вы компилируете включенный проект

dependencies {
    compile project(':library')
}

По сути, build.gradle верхнего уровня - это оболочка для всех общих конфигов подпроектов и переменных. Например, он чаще всего используется для раздела repositories { } для URL Maven, например. Полная информация об этом в Gradle - Мультипроектные сборки

Модули Remotes

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

Если ваши проекты общедоступны на GitHub, используйте сервис, такой как jitpack.io. Вы также можете настроить учетную запись в Bintray OSS или Maven Central, чтобы ваши библиотеки были доступны, как и большинство других.

Если ваши проекты являются частными в вашей компании, вам понадобится какой-нибудь сервер типа Maven, будь то универсальный веб-сервер, Nexus или Artifactory, вы можете добавить его, добавив в блок репозиториев.

repositories {
    maven { url "http://some.maven.site/" }
}

Затем добавьте исходники compile или implementation, как обычно

Ответ 2

Наконец Gradle 3.1 решил эту проблему. Композитные сборки теперь поддерживаются изначально. Больше здесь. Вкратце добавьте эту строку в настройки песочницы. Gradle file-

includeBuild '<PATH>/myLib'

Если вы не можете обновить Gradle, единственная надежда для вас - это опубликовать артефакт mylib в локальном репозитории maven и добавить mavenLocal() в sandbox/build.gradle.

Ответ 3

Этот ответ устарел в современных gradle и intellij, пожалуйста, обратитесь к darwinbaisa ответ

Оригинальный ответ

Это обсуждается в статье https://blog.jetbrains.com/idea/2016/10/intellij-idea-2016-3-eap-gradle-composite-builds-and-android-studio-2-2/

В основном вам нужно использовать составные сборки. Поэтому View> Окна инструментов> Gradle> Щелкните правой кнопкой мыши по проекту, используя библиотеку> Конфигурация составного компоновки> Отметьте проект библиотеки, для которой вы хотите использовать локальную версию.

Сделайте перестройку, а затем следует использовать местную зависимость