Загрузить несколько AAR в Nexus, используя релиз jenkins - gradle

Мне нужно загрузить несколько AAR сгенерированных из многомодульного проекта. Моя структура проекта выглядит следующим образом.

Project Root
  |--Main app
  |--Sub-Module1
  |--Sub-Module2
  |--Sub-Module3

Каждый субмодуль генерирует aar-файлы, которые мне нужны для загрузки релизной версии всех aars в Nexus. Однако я не хочу, чтобы apks загружались в Nexus. Я передаю все URL-адреса и кредиты от jenkins.

Вот мой рут build.gradle

release {
failOnCommitNeeded = false
failOnPublishNeeded = true
failOnSnapshotDependencies = true
failOnUnversionedFiles = false
failOnUpdateNeeded = true
revertOnFail = true
preCommitText = ''
preTagCommitMessage = '[Gradle Release Plugin] - pre tag commit: '
tagCommitMessage = '[Gradle Release Plugin] - creating tag: '
newVersionCommitMessage = '[Gradle Release Plugin] - new version commit: '
tagTemplate = '$version'
versionPropertyFile = './gradle.properties'
versionProperties = []
buildTasks = ['uploadAllArchives']
scmAdapters = [
        net.researchgate.release.GitAdapter
]
git {
    requireBranch = ''
  }
 }

 task ("uploadAllArchives") {
    doLast{
    println 'uploadAllArchives'
    subprojects.each { subProject->
        if(!subProject.name.contains('app') && !rootProject)
        it.uploadArchives.execute();
    }
  } 
}

публиковать-build.gradle

apply plugin: 'maven'

 uploadArchives {
       repositories {
        mavenDeployer {
            repository(url: (project.hasProperty('repoUrl') ? repoUrl 
               : sonatypeRepo)) {
                authentication(userName: sonatypeUsername, password: 
                 sonatypePassword)
                pom.groupId = sonatypeGroupID
                pom.artifactId = project.name
                pom.version = version

               }
           }
        }
     }

Подмодули build.gradle:

apply from: '../publish-build.gradle'

gradle clean build uploadArchives Это успешно загружает все мои снимки ааров в Nexus.

gradle release - Он успешно выполнил релиз, но ничего не загрузил в Nexus. Однако сборка прошла успешно.

Не могли бы вы помочь мне, что мне не хватает?

2 ответа

Вы можете получить это, добавив

afterReleaseBuild.dependsOn project.getSubprojects().collect({it.getTasks().getByName("uploadArchives")})

Это будет сделано, если вы хотите загрузить его для всех подпроектов, но если ваш корневой проект также создает артефакт, вы должны заменить getSubprojects() на getAllprojects()

Вы не можете использовать нормальный maven Плагин с Android-проектов. Вы должны использовать это: https://github.com/dcendents/android-maven-gradle-plugin

Также ваша задача uploadAllArchives является избыточной, просто запустите gradle uploadArchives из корневого проекта.

Другие вопросы по тегам