You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle发布仓库配置:指定部分仓库执行publish任务

问题解答:Gradle 按需指定发布仓库

你的当前配置无法直接实现需求——默认执行gradle publish时,Gradle会自动把构件推送到所有在publishing.repositories里定义的仓库,包括repo_c。不过我们可以通过调整任务依赖关系,轻松达成你想要的效果。

解决方案:移除默认发布任务对repo_c的依赖

我们可以通过修改构建脚本,让publish任务不再依赖repo_c对应的发布任务,这样默认执行publish只会推送repo_a和repo_b;而repo_c的推送则需要手动触发专属任务。

修改后的配置如下:

publishing {
    repositories {
        maven {
            url "https://repo_a/maven-releases/"
            credentials {
                username 'xxx'
                password 'xxx'
            }
            name "repo_a"
        }
        maven {
            url "https://repo_b/maven-releases/"
            credentials {
                username 'xxx'
                password 'xxx'
            }
            name "repo_b"
        }
        maven {
            url "https://repo_c/maven-releases/"
            credentials {
                username 'xxx'
                password 'xxx'
            }
            name "repo_c"
        }
    }
    publications {
        mavenJava(MavenPublication) {
            // 你的出版物配置...
        }
    }
}

// 关键:移除publish任务对repo_c发布任务的依赖
tasks.named('publish') {
    // 获取repo_c对应的发布任务
    def repoCPublishTask = tasks.named('publishMavenJavaPublicationToRepo_cRepository').get()
    // 从publish任务的依赖中移除它
    dependsOn.remove(repoCPublishTask)
}

效果说明

  • 执行gradle publish:只会将构件部署到repo_a和repo_b,完全不会触发repo_c的推送流程。
  • 需要部署到repo_c时,直接执行专属任务:gradle publishMavenJavaPublicationToRepo_cRepository(可以搭配build任务一起执行,比如gradle build publishMavenJavaPublicationToRepo_cRepository)。

补充说明

如果你的项目中有多个出版物(比如同时有mavenJava和mavenAndroid),只需要对应调整任务名称即可——每个出版物对应一个publish<PublicationName>To<repoName>Repository格式的任务,按需移除依赖就好。

内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:16:00