使用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()的工件()
Hi Hillkon,谢谢你。不过,我不想上传apk的(在应用程序模块中生成),我只想上传在子模块中生成的aar。上面的代码片段在app模块中寻找uploadArchives任务。你有什么想法,我怎么能做到这一点? –
嘿,没有那么多时间抱歉,但我会看看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