Gradle: выпуск задачи завершается с ошибкой compileJava, но сборка работает нормально - PullRequest
0 голосов
/ 17 июня 2019

Я работаю над многомодульным проектом и пытаюсь настроить задачу выпуска для загрузки всех архивов модулей на 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
...