java - 从 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?
解决方案
经过几个小时的调试,我找到了根本原因:我尝试使用的库依赖于另一个 gradle 项目:
com.company.myApp.utils
|-- core
|-- other
core
取决于other
通过声明implementation project(':other')
,但根项目没有关联的名称。因此生成的 pom 包含错误的组 id。
解决方案是添加
rootProject.name = 'com.company.myApp'
到settings.gradle
图书馆的文件。
推荐阅读
- javascript - I can not move my nodes, the force diagram does not apply in 3.js
- laravel - 在 laravel 中使用 vue 循环数组
- linux - 我如何覆盖此文件的更改?
- android - TextInputLayout 密码切换图标集已启用
- ruby-on-rails - 为什么 Rails 不能定位 gem?
- javascript - tensorflow.js cocossd 在移动浏览器中不起作用
- html - stepUp 和 stepDown 在 Edge 和 IE 中不起作用
- python-3.x - 创建包但不能从 pypi 使用它
- javascript - Vue CLI 3,我的图像资产返回 404 错误?
- optimization - Scipy.optimize.minimize 关于轨迹优化(成本函数最小化)