Gradle依赖传递异常:项目A的API依赖未引入项目B
核对项目A的maven-publish配置
用java-library插件的项目,发布时得确保publishing配置关联Java组件,才能把主代码Jar和API依赖的传递信息写入POM。项目A的build.gradle里的publishing块需配置如下:publishing { publications { mavenJava(MavenPublication) { from components.java } } repositories { mavenLocal() } }执行
publishToMavenLocal后,去本地Maven仓库(路径一般为~/.m2/repository/com/github/ynverxe/xenov/api/0.0.1)检查,必须存在api-0.0.1.jar(主代码包)、api-0.0.1.pom这两个核心文件,若只有源码包,说明发布配置未生成主Jar。检查项目A的POM文件
打开上述路径下的api-0.0.1.pom,查看是否有<dependencies>节点,且节点内包含你用api声明的所有依赖(自身模块及Maven仓库依赖)。若缺少这些依赖条目,项目B引入时自然无法获取传递依赖。调整项目B的仓库配置
你给mavenLocal添加的ignoreGradleMetadataRedirection会强制Gradle仅读取POM、忽略Gradle原生元数据,若项目A的POM本身存在问题,会加重依赖解析异常。先删除该配置,修改为:repositories { mavenLocal() }再执行
./gradlew clean build --refresh-dependencies刷新依赖缓存,查看类路径是否恢复正常。查看依赖解析日志
若问题仍存在,执行项目B的./gradlew dependencies --configuration implementation命令,查看输出中com.github.ynverxe.xenov:api:0.0.1的依赖树,确认传递依赖是否显示、主Jar是否被正确引入。
内容的提问来源于stack exchange,提问作者Ynverxe

