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
相关产品推荐
相关产品推荐

