У меня есть эта установка Gradle с четырьмя проектами, родитель с тремя детьми, в которой встроенный Java-сервер JSON встроен в военный файл, а затем статический HTML5 'frontend', потребляющий это, встроен в застежка-молния. Оба эти "устанавливают" свои артефакты в локальное репозиторий maven.
Третий проект объединения "Слияние" зависит от этих двух артефактов, чтобы построить "объединенную" войну, просто "сжимая их вместе".
Однако, как только я это сделал и работал, как предполагалось, мне, очевидно, пришлось протестировать сценарий начальной загрузки, удалив артефакты из локального репо.
Теперь я вдруг получаю "Artifact" no.company:frontend:[email protected] "не найден".
Невозможно ли зависеть от артефактов, которые будет производиться текущей сборкой?
Edit:
На основе другой идеи (и ответа Питера, обескураживающего эту логику Maven) эта версия выглядит многообещающей, а не пересекает Maven (примечание: она работает!):
// ## From frontend build.gradle:
task zipFrontend(dependsOn: 'buildFrontend', type: Zip) {
from ('dist/')
}
// ## From backend build.gradle:
apply plugin: 'war'
// ## From merger build.gradle:
task mergeFrontAndBack(dependsOn: [':backend:war',
':frontend:zipFrontend'], type: War) {
from zipTree(project(':frontend').tasks['zipFrontend'].archivePath)
from zipTree(project(':backend').tasks['war'].archivePath)
destinationDir(buildDir)
}
Изменить 2:
Основываясь на комментарии Питера о том, что он не достигнет структуры проекта братьев и сестер, и его конкретных предложений, вот получившаяся часть (примечание: она работает!):
// ## From frontend build.gradle:
task zipFrontend(dependsOn: 'buildFrontend', type: Zip) {
from ('dist/')
}
configurations { zip }
artifacts { zip zipFrontend }
// ## From backend build.gradle:
apply plugin: 'war'
configurations { jsonOnlyWar }
artifacts { jsonOnlyWar war }
// ## From merger build.gradle:
configurations { merge }
dependencies {
merge project(path: ':backend', configuration: 'jsonOnlyWar')
merge project(path: ':frontend', configuration: 'zip')
}
task mergeFrontAndBack(dependsOn: configurations.merge, type: War) {
from { configurations.merge.collect { zipTree(it) } }
destinationDir(buildDir)
}