首页 > 解决方案 > 从 repo url 中删除 Gradle 依赖 groupId

问题描述

A 有一个 gradle 项目,该项目在内部 maven 存储库中托管了一些依赖项。回购的网址是http://code.company.com/api/v4/groups/myApp/-/packages/maven/

如果组 id 的最后一部分以外的所有内容都包含在 maven 存储库的 url 中,则 Gradle 无法下载依赖项。

工作示例:

api: 'org.stuff.myApp.utils:core:1.0.0'
-> Gradle tries to download 
 https://code.company.com/api/v4/groups/myApp/-/packages/maven/org/stuff/myApp/utils/core/1.0.0/core-1.0.0.pom
-> This URL is correct

不好的例子:

api: 'com.company.myApp.utils:core:1.0.0'
-> Gradle tries to download 
 https://code.company.com/api/v4/groups/myApp/-/packages/maven/utils/core/1.0.0/core-1.0.0.pom
-> This URL is wrong, most parts of the group id are mising from the path.
It should be 
 https://code.company.com/api/v4/groups/myApp/-/packages/maven/com/company/myApp/utils/core/1.0.0/core-1.0.0.pom

我已经在几个 gradle 版本(包括最新的 6.7.1)中尝试过这个,但在文档中找不到任何相关内容。有谁知道这是否是预期的行为以及如何强制 gradle 始终附加完整的组 ID?

标签: javagradle

解决方案


经过几个小时的调试,我找到了根本原因:我尝试使用的库依赖于另一个 gradle 项目:

com.company.myApp.utils
|-- core
|-- other

core取决于other通过声明implementation project(':other'),但根项目没有关联的名称。因此生成的 pom 包含错误的组 id。

解决方案是添加

rootProject.name = 'com.company.myApp'

settings.gradle图书馆的文件。


推荐阅读