У меня есть два проекта Gradle, назовите их Blue и Green. Зеленый цвет зависит от синего, как указано в build.gradle
:
repositories {
mavenLocal()
}
dependencies {
compile 'org.example:blue:1.0'
}
Blue использует плагин Maven для создания соответствующего артефакта:
apply plugin: 'maven'
group = 'org.example'
version = '1.0'
Если я запускаю задачу install
на синем, она создает JAR и POM и помещает их в мой ~/.m2/repository
, без проблем.
Я импортирую Blue build.gradle
в проект IDEA, и он создает модуль для Blue, опять же никаких проблем.
Если теперь я импортирую Green build.gradle
в проект IDEA, он создаст модуль для Green, подберет Mavenized версию Blue из репозитория, создаст соответствующую библиотеку и добавит Blue-библиотеку в модуль Green как зависимость.
Однако, если я сейчас сделаю изменение кода в синем, это изменение кода не будет выбрано в Green. Зеленый будет продолжать использовать теперь устаревшую копию из репозитория Maven. Единственный способ получить синие изменения - это переустановить Blue, и что касается рефакторинга чего-то в синем и с рефакторингом, который охватывает использование в Green, забудьте об этом. Проблема.
Как я могу получить IDEA для распознавания взаимозависимостей между моими проектами Gradle и их соответствующими модулями IDEA?
Отредактировано для добавления: Многомодульный модуль не является вариантом, поскольку соответствующие зависимости распределяются между несколькими проектами приложений (не говоря уже о других проектах с общей библиотекой) и не подходят аккуратно в единую иерархическую структуру каталогов.
Отредактировано для добавления:. Указатель на то, что я в итоге придумал, см. этот ответ. Он по-прежнему требует ручного создания многомодульных проектов, когда вы хотите работать как с проектом, так и с его зависимостями, но он позволяет вам более или менее свободно менять исходные и двоичные зависимости.