无法创建名为“android”的发布,因为此容器不支持单独按名称创建元素

问题描述 投票:0回答:1

我正在使用 Gradle 在 Artifactory 上发布许多变体,并按照我在网上找到的示例,我使用了以下代码:

 publishing {
     publications {
         android.buildTypes.all { variant ->
             "${variant.name}Aar"(MavenPublication) {
                 artifactId = "artifactory_artifactId-${variant.name}"
                 groupId = "artifactory_groupId"
                 version = "v1.0.0"
                 // Going off of default Gradle naming configurations
                 artifact("$buildDir/outputs/aar/${project.getName()}-${variant.name}.aar")

                 artifact("$buildDir/outputs/aar/${project.getName()}-${variant.name}.aar") {
                     classifier variant.name
                     extension "aar"
                 }
             }
         }
     }
 }

这些是我的插件和依赖项:

 dependencies {
     classpath "com.android.tools.build:gradle:7.0.4"
     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0"
     classpath 'com.android.tools.build:gradle:7.2.1'
     classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:latest.release'
 }

当我在 Android Studio 上同步文件时,在控制台中打印以下错误:

“无法创建名为“android”的发布,因为此容器不支持单独按名称创建元素。请指定要创建的发布子类型。已知子类型是:MavenPublication”

我不明白应该导入哪个来解决我的问题。我应该导入什么“android”?

我应该能够使用“变体”对象来动态发布

.aar
文件,而无需单独指定它们。如果有替代方案,我很乐意使用它。

android gradle artifactory
1个回答
0
投票

可能对你来说太晚了,但无论如何,这就是答案: 如果要生成出版物的名称,则必须使用

publications.create(name, MavenPublication.class)
方法调用。您收到的错误是由于 lambda 试图将
android
解释为出版物的名称而引发的。

因此,您的代码应该如下所示:

publishing {
    android.buildTypes.all { variant ->
        publications.create("${variant.name}Aar", MavenPublication.class) {
            ...
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.