使用jenkins - gradle release将多个aar上传到Nexus

问题描述:

我需要上传多模块项目中生成的多个aar。我的项目结构如下。使用jenkins - gradle release将多个aar上传到Nexus

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

每个子模块产生,我需要上传所有AARS的发行版本的Nexus但是我不希望的APK上传到Nexus.I正在通过所有从詹金斯的联系地址和名气AAR文件。

这里是我的根的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但是构建成功。

你能帮我解我所缺少的吗?

你不能在android项目中使用正常的maven插件。您必须使用这一个:https://github.com/dcendents/android-maven-gradle-plugin

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

你可以通过添加

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

这将做到这一点,如果你想上传的所有子项目,但如果你的根项目也产生必须更换与getAllprojects getSubprojects()的工件()

+0

Hi Hillkon,谢谢你。不过,我不想上传apk的(在应用程序模块中生成),我只想上传在子模块中生成的aar。上面的代码片段在app模块中寻找uploadArchives任务。你有什么想法,我怎么能做到这一点? –

+0

嘿,没有那么多时间抱歉,但我会看看PomFilters,你可以使用https://docs.gradle.org/2.2/javadoc/org/gradle/api/artifacts/maven/PomFilterContainer.html 和 https://docs.gradle.org/3.3/userguide/maven_plugin.html#sub:multiple_artifacts_per_project – Hillkorn