gradle混淆依赖与重复的子项目名称

时间:2015-02-11 15:47:05

标签: java gradle

我有一个包含许多子项目和子项目的gradle项目。我们发现了一个奇怪的情况,就像这样:

这是一个不受欢迎的项目结构:

  • 的build.gradle
  • settings.gradle
  • 子1
    • 共同
      • 的build.gradle
      • SRC
    • 子一
      • 共同
        • 的build.gradle
        • SRC
        • 的build.gradle
        • SRC
  • SUB2

我遇到的问题是 - 子:sub-1:sub-a:war取决于:sub-1:common和:sub-1:sub-a:common和:sub-1:sub-a :war无法构建,因为有些gradle看到两个依赖关系,但只保留一个,:sub-1:sub-a:common。运行gradle依赖项将显示如下所示的行:sub-1:common - > sub-1:sub-a:common

似乎gradle会在计算依赖关系时丢弃一些东西,或者太聪明,并且看到2个具有相同' final'的子项目。在计算或提取的依赖项列表中只命名并选择其中一个。

当然如果我重命名:sub-1:sub-a:common to:sub-1:sub-a:common1问题消失了。 FWIW:公共子项目都制作jar - 但是它们设置了非常不同的特定archivesBaseName。

不确定“叶子”的所有名称。子项目是全球独一无二的,有没有办法解决这个问题?

(注意:可能会出现退化的代码/项目结构模式 - 但是这会出现在一个ant-> gradle转换项目中,我们不会在这个'阶段&#39阶段改变结构;只有构建工具。虽然我欢迎评论改变结构;我确实想看看我能做些什么我能做的第一次)

1 个答案:

答案 0 :(得分:0)

A quick fix is to make the project group names unique.

Of course if you need to publish the artifacts from the identical projects this may not be possible. This usually is not the case though, and changing the group name resolves the conflict.

project(':sub1:common').group = 'sub1.common'
project(':sub1:suba:common').group = 'sub1.suba.common'