【问题标题】:Gradle dependency groupId removed from repo url从 repo url 中删除 Gradle 依赖 groupId
【发布时间】:2021-03-01 13:43:07
【问题描述】:

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?

【问题讨论】:

    标签: java gradle


    【解决方案1】:

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

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

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

    解决方案是添加

    rootProject.name = 'com.company.myApp'
    

    到库的settings.gradle 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-30
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多