android - 获取ArtifactoryPublication的BuildType版本名称

标签 android gradle artifactory android-build-type

我正在使用以下gradle创建一个快照构建类型,其文件名包括当前提交哈希和后缀“SNAPSHOT”:

def libraryGroupId = 'my.group.id'
def libraryVersion = '1.7.2'
def libraryArtifactId = 'core'

android {
    defaultConfig {
        versionName libraryVersion
    }
    buildTypes {
        debug {
            versionNameSuffix '-debug'
       }
        snapshot {
            versionNameSuffix '-SNAPSHOT-' + getCommitHash()
        }
    }
    libraryVariants.all { variant ->
        variant.outputs.all {
            def versionName = variant.variantData.variantConfiguration.versionName
            outputFileName = "${libraryArtifactId}-" + versionName + ".aar"
        }
    }
}

此外,我还有一个人工发布任务:
publishing {
    publications {
        aar(MavenPublication) {
            groupId libraryGroupId
            version libraryVersion
            artifactId libraryArtifactId

            def artifactUrl = "$buildDir/outputs/aar/<??outputFileName??>"
            println "#### artifactUrl: " + artifactUrl
            artifact(artifactUrl)

            pom.withXml {
                ...
            }
        }
    }
}

现在,“outputFileName”始终设置为最后定义的构建类型,因为variant.outputs.all会针对每种构建类型覆盖它。所以我的问题是:

如何在outputFileName发布闭包中获取当前版本的artifactory

任何其他方式都欢迎。不必通过自定义变量。但是artifactoryUrl应该与生成的/outputs/aar/<snapshot-filename>.aar相匹配。

最佳答案

您可以为每个buildVariant生成发布任务。

publishing {
    publications {
        android.libraryVariants.all { variant ->
        "aar${variant.name.capitalize()}"(MavenPublication) {
          def versionName = variant.variantData.variantConfiguration.versionName
          artifact("$buildDir/outputs/aar/${libraryArtifactId}-${versionName}.aar")
        }
      }
    }    
}

然后调用正确的任务-应该是publishAarSnapshotPublicationToMavenRepository

关于android - 获取ArtifactoryPublication的BuildType版本名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53262752/

相关文章:

gradle - 转换为 gradle-kotlin-dsl Jfrog.Artifactory 配置

dependencies - 通过gradle将依赖关系jar和主要 Artifactory 一起发布到 Artifactory

Android - Honeycomb - 操作栏选项卡 fragment 保存/恢复状态

java - 如何将自定义插件发布到Maven本地,然后在另一个本地项目中使用?

java - 使用 ProGuard 将字节码转换为 dex 时出错

Android Studio 2.3.3 错误 Gradle

apache - 什么是 502 代理错误?如何解决

Android 界面错误 ImageButton

android - 在 TWebBrowser 中将图钉添加到 Google map 并处理点击

java - Android注册 Activity 崩溃