【发布时间】:2015-07-24 15:46:16
【问题描述】:
我有一个使用 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 的“相同实例” , 在构建期间填充。
【问题讨论】:
标签: gradle upload android-gradle-plugin gradle-plugin gradle-release-plugin