gpt4 book ai didi

gradle - Gradle uploadArchives工件的 namespace (取决于插件)

转载 作者:行者123 更新时间:2023-12-03 04:04:12 26 4
gpt4 key购买 nike

我有一个使用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)

为了实现这一点,我要做的就是根据上载的存档来执行gradle-release插件的updateVersion任务
updateVersion.dependsOn uploadArchives

好吧,当我这样做时,artifacts.archives。为空,因此没有上载。

我怀疑,也许是因为我添加了uploadArchives任务作为发布插件任务的依赖项,所以“命名空间”不同,因此,基本上,uploadArchives任务不使用artifacts.archives的“相同实例”,构建。

最佳答案

updateVersion.dependsOn uploadArchives



如果这样做,那么最终您将在发布完成的相同过程中调用 uploadArchives,但是在完成构建的过程中却未在同一过程中进行调用。为了使版本适合自己的构建任务,发行插件会生成一个新的gradle构建,并使用正确的版本号运行该构建。 (之所以这样做,是因为许多其他插件(如maven-publish)在运行时无法使用更改后的项目版本)

如果要在与构建相同的过程中执行任务,则需要使用 beforeReleaseBuildafterReleaseBuild依赖的任务。它们都在同一过程中运行。

所以在你的情况下
afterReleaseBuild.dependsOn uploadArchives

在构建完成发行版本之后,这将立即运行 uploadArchives

为了更好地理解,我对您的任务图进行了调整:
- current version: 0.1.0-SNAPSHOT
- run release
- version becomes: 0.1.0 (and is written to gradle.properties)
- spawn new gradle build
- build (build task)
- upload this build to Nexus (uploadArchives task)
- update the version to: 0.1.1-SNAPSHOT (updateVersion task)

关于gradle - Gradle uploadArchives工件的 namespace (取决于插件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31614735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com