У меня есть 3 проекта Java, расположенных рядом друг с другом в структуре папок: Proj1
, Proj2
и Proj3
. Proj1
зависит от Proj2
и зависит от модели Proj3
.Gradle не может найти проект в цепочке зависимостей
Вот их gradle.settings
файлы:
rootProject.name = 'Proj3'
rootProject.name = 'Proj2'
include ':Proj3'
project(':Proj3').projectDir = new File(settingsDir, '../Proj3')
rootProject.name = 'Proj1'
include ':Proj2'
project(':Proj2').projectDir = new File(settingsDir, '../Proj2')
и их gradle.build
файлы:
Для 2
apply plugin: 'java'
dependencies {
compile project(':Proj3')
}
Для 1
apply plugin: 'java'
dependencies {
compile project(':Proj2')
}
2-я и 3-проекты построены устраивало Gradle, но когда я пытаюсь построить 1-ый он жалуется, что
Возникла проблема оценки проекта «: proj2: ». Проект с пустым ': Proj3' не найден в проекте ': Proj2'.
и указывает на линию compile project(':Proj3')
(в сборке Proj2
). Содержимое стека начинается с
org.gradle.tooling.BuildException: Не удалось получить модель типа «EclipseProject», используя распределение Gradle 'https://services.gradle.org/distributions/gradle-3.1-bin.zip.
Не знаю, почему 2-й проект может найти 3-й штраф при его построении и внезапно не при создании 1-го. Почему первый вопрос о том, как второй ищет третий, после того, как он уже включен в папку «Project и External Dependencies».
Как это сделать?
Спасибо, но я не хочу, чтобы эти проекты были под одним, поскольку proj2 и 3 - это утилита/библиотеки и будут использоваться в других проектах. Что бы вы сделали, если proj3 понадобился бы за пределами rootproject? – Mark
Затем вы должны опубликовать его артефакт в каком-то локальном репозитории и использовать его так же, как и другие зависимости – Stanislav
Это будет работать. Как это объяснить в руководстве пользователя? Или вы можете продемонстрировать? – Mark