首页 > 解决方案 > maven-publish plugin gradle 只发布特定模块

问题描述

我正在使用 gradle build 开发一个多模块 android 项目。

我正在使用 maven-publish 插件将工件发布到 sonartype nexus。

当前设置在每个模块内都有一个发布作业

plugins{
    id(Plugins.kotlinAndroidApplication)
    id(Plugins.kotlinAndroid)
    id(Plugins.kotlinAndroidExtensions)
    id(Plugins.mavenPublish)
    id(Plugins.dokkaAndroid)
}

publishing {
    repositories {
        maven {
        credentials {
            username = project.properties["mavenUser"] as? String
            password = project.properties["mavenPassword"] as? String
        }
        url = https://mynexus
    }
    }
    publications {
        create<MavenPublication>("mavenAar") {
            groupId = rootProject.extra.get("groupId") as String
            artifactId = rootProject.extra.get("artifactId") as String
            version = (rootProject.extra.get("versionName") as String) + (if (project.hasProperty("release")) "" else "-SNAPSHOT")

            from(components["android"])
            //artifact(tasks["javadocJar"])
            artifact(tasks["dokkaJar"])
        }
    }
}

当我的 Jenkins CI 使用 deploy = true 构建项目时,每个模块都会被发布。问题是某些模块依赖于其他模块,因此依赖模块将被发布两次。在发布 nexus maven repo 上不允许重新部署具有相同版本的模块。

无论如何只发布某些模块或确保每个模块只部署一次?

标签: androidgradlemaven-publish

解决方案


推荐阅读