gradle - Codenarc奇怪的依赖关系

标签 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版本?

感谢帮助。

最佳答案

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

(以我的观点)库以动态范围发布是错误的。
GMetrics显然也将其视为错误,并在1.0中修复了此依赖关系,该依赖关系改为依赖特定的Groovy版本。
反过来,CodeNarc 1.0取决于GMetrics 1.0。

因此,如果可行的话,最简单的方法就是依靠CodeNarc 1.0,您的问题将消失。

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

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

关于gradle - Codenarc奇怪的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47869255/

相关文章:

Groovy 映射到 json 对象列表

java - 如何将外部库 (libs) 集成到 grails 项目中?

gradle - 将 Groovy 应用程序和测试代码与 jlink 解决方案结合使用来捆绑 JavaFX

android - 克隆现有的 Android Studio 项目

Android Studio 无法解析 aar 中的类,即使它们位于 arr/classes.jar 中

build - 使用最新的稳定Gradle版本创建Gradle包装器

groovy - 在比较两个 xml 文件并记录差异时,SoapUI log.info 由于某种原因打开对话框

android studio 无法解析导入 org.json.JSONObject

android - 为什么 gradle 文件图标显示老鼠?

grails - 我可以在 grails 中使用 Bean 作为模型而不是 Map 吗?