我正在使用 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
文件,而无需单独指定它们。如果有替代方案,我很乐意使用它。
可能对你来说太晚了,但无论如何,这就是答案: 如果要生成出版物的名称,则必须使用
publications.create(name, MavenPublication.class)
方法调用。您收到的错误是由于 lambda 试图将 android
解释为出版物的名称而引发的。
因此,您的代码应该如下所示:
publishing {
android.buildTypes.all { variant ->
publications.create("${variant.name}Aar", MavenPublication.class) {
...
}
}
}