2017-12-18 259 views
0

我们使用codenarc插件和gradle这个,我看在依赖怪事:Codenarc奇怪的依赖

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,但跆拳道 - 为什么它链接到2.6.0-alpha-1?我可以告诉codenark使用Groovy 2.1.8版本吗?

感谢您的帮助。

回答

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,问题就会消失。

另外,您还可以声明Groovy版本用于您自己的依赖关系force true,这将强制您定义的版本。

或者,您可以配置依赖关系解决方案来影响所选版本。