Я работаю над многомодульным проектом и пытаюсь настроить задачу выпуска для загрузки всех архивов модулей на Nexus одновременно, используя плагин исследовательской версии gradle-release.Сначала я настроил плагин внутри блока allprojects, и он работал нормально, но он делал новый тэг / коммит для каждого выпущенного модуля, и это было не то, чего я ожидал.Поэтому я оставил конфигурацию uploadArchives во всех проектах, но перенес конфигурацию релиза, чтобы она применялась только в корневом проекте.Моя проблема заключается в следующем: когда я использую gradle clean build из root, он работает нормально.Когда я делаю чистую загрузку, она работает нормально и загружает все модули на нексус.Когда я делаю чистую версию Gradle и добавляю
afterReleaseBuild.dependsOn uploadArchives
, это также работает, но только загружает корневой проект в Nexus, а не модули.Поэтому я изменил зависимость задачи следующим образом:
afterReleaseBuild.dependsOn subprojects.uploadArchives
И это вызвало ошибку compileJava для одного из моих модулей, сказав, что некоторый пакет, созданный некоторыми другими модулями проекта, не существует.Я уже пробовал другие способы изменить зависимость, например:
afterReleaseBuild.dependsOn allprojects.findResults{ it.tasks.findByName('uploadArchives')}
, но я получил ту же ошибку.
Зная, что uploadArchives и build работают хорошо, когда я использую его из root, не вызывая релиззадача, это связано с этим последним, но я действительно не понимаю, чего мне там не хватает.Спасибо за любую помощь, вот интересные примеры моего build.gradle:
allprojects {
apply plugin: 'maven'
uploadArchives{
repositories{
mavenDeployer{
if(project.version.endsWith('-SNAPSHOT')) {
repository(url: "nexus-repo-snapshots") {
authentication(userName: myusername, password: mypassword)
}
}
else {
repository(url: "nexus-repo-releases/") {
authentication(userName: myusername, password: mypassword)
}
}
}
}
}
}
apply plugin: 'net.researchgate.release'
release {
failOnCommitNeeded = false
failOnPublishNeeded = false
failOnSnapshotDependencies = false
failOnUnversionedFiles = false
failOnUpdateNeeded = false
versionPropertyFile = 'gradle.properties'
//versionPatterns = [
// Increments minor number: "2.5.17-SNAPSHOT" => "2.6.0-SNAPSHOT"
// /[.]*\.(\d+)\.(\d+)[.]*/: { Matcher m, Project p -> m.replaceAll(".${(m[0][1] as int) + 1}.0") }
//]
tagTemplate = "mytag"
git{
requireBranch='my_branch'
pushToRemote='origin'
}
}
afterReleaseBuild.dependsOn subprojects.uploadArchives