我有一个使用 Gradle 构建的 Android 应用程序。我正在使用gradle-release插件创建自动发布,然后使用 Gradle 的 uploadArchives 任务将生成的 .apk 上传到 Maven 存储库(Nexus)。
我必须添加档案以在运行时动态上传,因为我的构建使用的是自定义 Android 风格。当我从命令行运行 uploadArchives 时,一切正常:
variant.outputs.each { output ->
def apkFile = output.outputFile
tasks."assemble${capitalizedVariantName}" << {
artifacts.archives [file: apkFile, classifier: variant.baseName]
}
}
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = PROJECT_GROUP
pom.artifactId = PROJECT_NAME
}
}
}
然后我运行:
./gradlew assembleFlavorNameRelease uploadArchives
并且 .apk 已正确上传到 Nexus。
在发布插件自动更改项目的版本名称并提交之前,我需要运行 uploadArchives 任务。基本上:
- current version: 0.1.0-SNAPSHOT
- run release
- version becomes: 0.1.0
- build (build task)
- upload this build to Nexus (uploadArchives task)
- update the version to: 0.1.1-SNAPSHOT (updateVersion task)
为了实现这一点,我所做的是根据 uploadArchives 让 gradle-release 插件的 updateVersion 任务
updateVersion.dependsOn uploadArchives
好吧,当我这样做时,artifacts.archives。是空的,所以没有上传。
我怀疑,也许,由于我将uploadArchives任务添加为发布插件任务的依赖项,那么“命名空间”是不同的,所以基本上uploadArchives任务不使用artifacts.archives的“相同实例”,填充期间构建。