android - 在Gradle 5中使用Maven publish plugin for Android项目

标签 android gradle android-gradle-plugin

我正在尝试构建一个脚本,以使用“maven-publish”插件将 APK Artifact 发布到 Nexus。 在 Gradle 4 中,可以有这样的配置(这可行):

apply plugin: 'maven-publish'

publishing {
    repositories {
        maven {
            url "https://$MY_NEXUS_SERVER$/repository/${project.version.endsWith('-SNAPSHOT') ? 'snapshots' : 'releases'}"
            credentials {
                username mavenUser
                password mavenPassword
            }
        }
        publications {
            android.applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    if (variant.name == "release") {
                        create("apk${variant.name.capitalize()}", MavenPublication) {
                            groupId project.group
                            artifactId project.name
                            version project.version

                            artifact(output.outputFile)
                        }
                    }
                }
            }
        }
    }
}

在 Gradle 5 中 this is no longer possible

尝试构建项目时出现此错误:

Cannot create a Publication named 'android' because this container does not support creating elements by name alone. Please specify which subtype of Publication to create. Known subtypes are: MavenPublication

如何重写此代码以与 Gradle 5 兼容?

最佳答案

构建任意变体的另一个选项(在 Gradle 5.5.1/Android Gradle 3.5.0 上测试):

apply plugin: 'maven-publish'

publishing {
    repositories {
        maven {
            url "https://$MY_NEXUS_SERVER$/repository/${project.version.endsWith('-SNAPSHOT') ? 'snapshots' : 'releases'}"
            credentials {
                username mavenUser
                password mavenPassword
            }
        }
        publications {
            android.applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    "maven${variant.name.capitalize()}Apk"(MavenPublication) {
                        groupId project.group
                        artifactId project.name
                        version project.version

                        artifact(output.outputFile)
                    }
                }
            }
        }
    }
}

使用调试变体构建时生成的发布任务示例:publishMavenDebugApkPublicationToMavenRepository

关于android - 在Gradle 5中使用Maven publish plugin for Android项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53666554/

相关文章:

android - Buttknife 不适用于 RXJava

Android 构建失败 - java.lang.IllegalArgumentException : Reference to wildcard must be a number (*)

android - 在 flutter webview 上修复 net::err_unknown_url_scheme whatsapp 链接

java - EditText 输入 3 个字母和 4 个数字 - 动态更改输入类型

java - Android Wear 表盘旋转留下痕迹

android - Android编译错误-transformJackWithJackForDebug

gradle - 错误 : cannot find symbol class for add kotlin class into java class in android studio 3. 0 稳定

gradle - Gradle项目同步失败。 Android Studio

gradle - 在 Android Studio 中包含和排除不同风格的源集

Java/Kotlin/Android - 格式化时间 (hh :mm:ss) and remove unnecessary zeros from the beginning