Зависимость компиляции gradle по требованию, в противном случае используйте jar
Меня интересует использование gradle в многомодульном проекте. Я могу повторно использовать этот вопрос. Вложенные в Gradle мульти-проекты с зависимостями компиляции проекта, а также проиллюстрировать их зависимости.
Root
|__ P1
| |_ PP1
| |_ PP2
|
|__ P2
|_PP3
|_PP4
Как и в первоначальном вопросе, я хочу скомпилировать PP1 - но я только по требованию, в противном случае я хочу использовать последнюю сборку jar-зависимость.
dependencies {
compile(project(":P1:PP1"))
}
Так что в идеале я хочу что-то вроде
dependencies {
compile(compileFromSourceCodeOrLoadJar(project(":P1:PP1"), 'P1:PP1'))
}
где он будет скомпилирован, если исходные файлы в каталоге PP1 новее, чем последний собранный jar. Идея состоит в том, чтобы скомпилировать, только если это строго необходимо. Решение может быть принято из последних измененных временных меток исходных файлов против файла JAR.
Чтобы сделать его еще более сложным и потенциально эффективным, решение должно быть принято на основе выходных данных системы контроля версий - если есть какие-либо изменения со времени X или ревизии R - тогда извлекайте и компилируйте; в противном случае используйте зависимость jar.
Кто-нибудь решил эту проблему? Я думаю, что это может быть решено с помощью пользовательского плагина gradle/groovy, но кто-то, должно быть, уже решил это?
Благодарю.
1 ответ
Планируется, что Gradle будет поддерживать распределенный кэш сборок, но он пока недоступен. Реализация этого хорошо, не касаясь кодовой базы Gradle, вероятно, будет трудной (я не знаю ни о каких таких усилиях). Регулярное репозиторий Maven/Ivy, возможно, не лучшее место для хранения результатов кэшированной сборки.