2016-08-10 4 views
7

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

У меня есть 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>' и т. Д. Никаких кубиков.

+0

У вас есть верхний уровень 'bulid.gradle' и' settings.gradle' за пределами этих двух модулей? –

+0

Нет, не знаю. Отдельные структуры на одном уровне. – emiles

+0

Я понимаю, что могу создать «lib» dir в «песочнице» и скопировать файл jar-файла «myLib» каждый раз, когда я перестраивал и разбивал «myLib», но я ищу лучшее решение. Мысль IntelliJ и/или Gradle поставили бы это вместе для меня. – emiles

ответ

16

Это шаблон следуют большинство проектов 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 - Multi-project builds

+0

Это звучит разумно и точно, что я хочу делать, однако у меня возникают проблемы с тем, чтобы все было сработано с IntelliJ. Спасибо, я помечаю это как решение. Любопытно, какую IDE вы обычно используете? – emiles

+0

Я использую Intellij IDEA. Я только когда-либо создавал один проект Gradle Java, хотя –

1

Наконец, Gradle 3.1 разобрался в этой проблеме. Композитные сборки теперь поддерживаются изначально. Подробнее here. Короче добавить эту строку в песочнице settings.gradle Файл-

includeBuild '<PATH>/myLib' 

Если вы не можете обновить Gradle, то единственная надежда на вас, чтобы опубликовать MYLIB артефакт местного Maven репо и добавить mavenLocal() в песочнице /build.gradle.

+0

Ваша ссылка, кажется, отсутствует, что 'includeBuild' директива –

Смежные вопросы