【问题标题】:Gradle uploadArchives artifacts namespace when depending on a pluginGradle uploadArchives 工件命名空间依赖于插件时
【发布时间】: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


    【解决方案1】:

    updateVersion.dependsOn 上传存档

    如果你这样做,那么你最终会在发布完成的同一过程中调用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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-20
      • 1970-01-01
      • 2015-02-17
      • 2012-08-30
      • 2017-11-15
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      相关资源
      最近更新 更多