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

Gradle项目Spring Cloud Contract stubs无法发布到本地Maven仓库

问题原因

stubs包无法发布到本地Maven仓库的核心原因有两个:

  1. 引入了Maven场景专用的冗余依赖,且自定义maven-publish发布规则时,没有把Spring Cloud Contract生成的stubs产物纳入发布范围
  2. 自动发布stubs的默认逻辑是基于旧版Gradle maven 插件实现的,使用新版maven-publish插件时,插件不会自动修改自定义的发布配置,必须手动声明stubs包的发布规则
修复步骤

1. 清理冗余错误依赖

打开build.gradle,删除Gradle项目不需要的Maven专用插件依赖:

// 直接删除这一行冗余配置
implementation 'org.springframework.cloud:spring-cloud-contract-maven-plugin:3.1.3'

可选优化:当前配置重复引入了2.8.5、2.8.7两个版本的spring-kafka和对应测试包,建议删除低版本依赖,避免出现依赖冲突。

2. 将stubs产物加入发布配置

在publishing块的mavenJava发布项中,添加stubs包的发布声明,修改后的配置如下:

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

            artifact sourceJar {
                classifier "sources"
            }
            // 新增stubs包发布配置
            artifact verifierStubsJar {
                classifier "stubs"
            }
        }
    }
}

verifierStubsJar是Spring Cloud Contract Gradle插件自动注册的任务,负责生成带stubs分类器的存根jar包,将其声明为发布产物后,执行发布任务时就会自动把该包上传到目标仓库。

3. 验证发布结果

依次执行以下命令清理缓存、重新构建发布:

./gradlew clean
./gradlew build publishToMavenLocal

执行完成后检查本地Maven仓库对应目录,即可看到pcshop-1.0-SNAPSHOT-stubs.jar包。
如果发布前想确认stubs包是否正常生成,可以单独执行./gradlew verifierStubsJar,然后在项目build/libs目录下检查是否存在对应stubs jar包。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:36:22