上传多个aar';使用jenkins-gradle版本从s到Nexus

上传多个aar';使用jenkins-gradle版本从s到Nexus,gradle,android-gradle-plugin,aar,gradle-plugin,gradle-release-plugin,Gradle,Android Gradle Plugin,Aar,Gradle Plugin,Gradle Release Plugin,我需要上传一个多模块项目生成的多个aar。我的项目结构如下 Project Root |--Main app |--Sub-Module1 |--Sub-Module2 |--Sub-Module3 每个子模块生成aar文件,我需要将所有aar的发布版本上载到Nexus,但我不希望将APK上载到Nexus。我正在传递jenkins提供的所有Nexus url和cred 这是我的根构建 release { failOnCommitNeeded = false failOnPubl

我需要上传一个多模块项目生成的多个aar。我的项目结构如下

Project Root
  |--Main app
  |--Sub-Module1
  |--Sub-Module2
  |--Sub-Module3
每个子模块生成aar文件,我需要将所有aar的发布版本上载到Nexus,但我不希望将APK上载到Nexus。我正在传递jenkins提供的所有Nexus url和cred

这是我的根构建

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();
    }
  } 
}
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

               }
           }
        }
     }
publish-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();
    }
  } 
}
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
这将成功地将我的所有快照AAR上载到Nexus

gradle release
-它成功完成了发布,但没有将任何内容上传到Nexus,但构建成功


你能帮我看看我缺少什么吗?

你不能在android项目中使用普通的
maven
插件。你必须使用这个:


此外,您的uploadAllArchives任务是多余的,只需从根项目运行
gradle uploadArchives

您可以通过添加

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

如果您想为所有子项目上传它,那么就可以了,但是如果您的根项目也生成了一个工件,那么您必须用getAllprojects()替换getSubprojects()

Hi Hillkon,谢谢。但是我不想上传apk(在应用程序模块中生成),我只想上传在子模块中生成的aar。上面的代码段在app模块中查找uploadArchives任务。你知道我怎样才能做到这一点吗?嘿,没有那么多时间,对不起,我想看看你可以使用的POM过滤器,然后