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