Codenarc奇怪的依赖

时间:2017-12-18 13:11:44

标签: gradle groovy

我们正在使用codenarc插件和gradle,我在依赖项中看到了奇怪的东西:

codenarc - The CodeNarc libraries to be used for this project.
\--- org.codenarc:CodeNarc:0.25.2
 +--- junit:junit:4.8.1 -> 4.12
 |    \--- org.hamcrest:hamcrest-core:1.3
 +--- org.codehaus.groovy:groovy-xml:2.1.8 -> 2.6.0-alpha-1
 |    \--- org.codehaus.groovy:groovy:2.6.0-alpha-1
 +--- org.codehaus.groovy:groovy:2.1.8 -> 2.6.0-alpha-1
 +--- org.codehaus.groovy:groovy-ant:2.1.8 -> 2.6.0-alpha-1
 |    +--- org.codehaus.groovy:groovy:2.6.0-alpha-1
 |    +--- org.codehaus.groovy:groovy-groovydoc:2.6.0-alpha-1 -> 2.4.9
 |    |    +--- org.codehaus.groovy:groovy-templates:2.4.9
 |    |    |    +--- org.codehaus.groovy:groovy:2.4.9 -> 2.6.0-alpha-1
 |    |    |    \--- org.codehaus.groovy:groovy-xml:2.4.9 -> 2.6.0-alpha-1 (*)
 |    |    \--- org.codehaus.groovy:groovy:2.4.9 -> 2.6.0-alpha-1
 |    +--- org.apache.ant:ant-junit:1.9.9
 |    \--- org.apache.ant:ant-antlr:1.9.9
 \--- org.gmetrics:GMetrics:0.7
      +--- org.codehaus.groovy:groovy:[2.1.0,) -> 2.6.0-alpha-1
      +--- org.codehaus.groovy:groovy-xml:[2.1.0,) -> 2.6.0-alpha-1 (*)
      \--- org.codehaus.groovy:groovy-ant:[2.1.0,) -> 2.6.0-alpha-1 (*)

codenark的版本是0.25.2并且在pom中它取决于groovy 2.1.8,但是wtf - 为什么它链接到2.6.0-alpha-1?我怎么能告诉codenark使用Groovy 2.1.8的版本?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

正如您在输出中所看到的,罪魁祸首是GMetrics CodeNarc 0.25.2依赖于GMetrics 0.7,而GMetrics 0.7依赖于Groovy 2.1.0或更新版本,它解析为最新的2.6.0-alpha-1版本。
默认版本冲突解决策略是使用冲突的最新版本,然后是2.6.0-alpha-1。

对于要使用动态范围发布的lib,这是一个错误(在我看来) GMetrics显然也将此视为错误,并将此依赖关系修复为1.0,而不依赖于特定的Groovy版本 CodeNarc 1.0依赖于GMetrics 1.0。

因此,如果可行,最简单的方法就是依赖CodeNarc 1.0,你的问题就会消失。

或者,您也可以使用force true声明要在您自己的依赖项中使用的Groovy版本,这将强制您定义的版本。

或者,您可以配置依赖项解析以影响所选的版本。