升级到Gradle7后传递依赖缺失,配置api未生效问题求助
问题根因
你遇到的问题根源是projectB的Maven发布配置错误,没有将项目依赖声明自动写入上传的POM文件:
- 你当前的配置仅手动指定了上传jar包,生成的pom.xml中没有任何依赖节点,因此即便projectB用
api声明了对projectC的依赖,其他项目依赖projectB时也无法识别到传递依赖,自然运行时会找不到projectC的类。 - Gradle6阶段正常大概率是你当时使用的是多项目直接依赖(
project(':projectB'))而非依赖maven仓库中发布的jar包,多项目依赖不需要读取POM就能识别传递依赖。
可行解决方案
第一步:修正projectB(以及projectC)的发布配置
将mavenJava发布块中的手动指定jar包逻辑替换为from components.java,该配置会自动生成包含完整依赖声明的POM文件,同时上传jar和POM到仓库:
publications { mavenJava(MavenPublication) { group = 'group-projectB' artifactId = 'artifact-projectB' // 替换原来的artifact(file(...))配置为下面这行即可 from components.java } }
projectC的发布配置也建议做同样修改,避免后续projectC新增依赖时出现同样的传递依赖丢失问题。
第二步:重新发布并清理缓存
- 升级projectB的版本号(或者清空本地maven仓库、Gradle缓存中对应版本的projectB文件,避免加载旧的错误版本),重新发布到maven仓库。
- 回到projectA刷新依赖,删除你手动添加的projectC依赖即可正常运行。
内容的提问来源于stack exchange,提问作者Girish
相关产品推荐
相关产品推荐

