У меня есть плоская иерархия проектов с 4 проектами. Давайте называть их B, C, D, M, и они имеют следующие линейные зависимости:Зависимости транзитных проектов не найдены
B -> C -> M -> D
-> = "зависит от"
Проекты B, C и M имеют build.gradle и settings.gradle. Настройки.gradle всегда включает includeFlat для всех зависимых проектов. В случае B это будет includeFlat ('D', 'M', 'C'). build.gradle определяет, что всегда определяет зависимость от проекта, от которого он зависит. В случае B, который будет компилировать проект ('C').
Если я пытаюсь создать проект BI столкнуться с проблемой, что после разбора B, Gradle пытается разобрать build.gradle из C и терпит неудачу, потому что не могу найти М.
* What went wrong:
A problem occurred evaluating project ':C'.
> Project with path 'M' could not be found in project ':C'.
Я думаю соответствующая часть отладочной:
Included projects: [root project 'B', project ':C', project ':D', project ':M']
кажется Gradle сортирует включают в алфавитном порядке, несмотря на то, что определено в других settings.gradle файлах и в зависимости build.gradle.
Когда я создал C, я также задавался вопросом, почему мне нужно включить D в настройки includeFlat. Но там он работает, потому что он заказывает включение в D, M.
Единственное «решение», которое я сейчас вижу, это то, что я удаляю зависимости проекта в B и зависит от сборки jar C. Но у этого есть огромный недостаток (нарушение игры), что, когда я что-то меняю в DI, нужно полная сборка, публикация и цикл «обновления от нексуса» до тех пор, пока изменения не будут видны. Поскольку C, M и D все еще находятся в активной разработке, это не вариант.
Чтобы исправить это, мне нужно будет сообщить плагину eclipse, что когда он обнаруживает зависимость jar, которая также является проектом, он добавляет зависимость проекта к пути к классам вместо зависимости jar.
Еще раз спасибо за расчистку вещей. Я читал соответствующие главы несколько раз, но я считаю, что они менее понятны, чем другие главы и недостающая информация, например, что у вас может быть только один параметр ..gradle. Например, «7.3.3. Зависимости между проектами» заставляет это звучать, как только импортируется банка. Также я предпочел бы больше примеров «реальной жизни» в главе 55 вместо примера морской жизни. Может быть, лучше говорить о составе проектов при объяснении создания нескольких проектов. Говоря об зависимостях, легко думать, что они ведут себя как внешние зависимости. – ssindelar