我有一个Gradle 3.5项目,在那个项目中我依赖于一个工件:
compile "a.b.c:depProject:1.1.0"
" depProject"是一个Maven项目,在该项目的pom文件中,它依赖于另一个工件:
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>4.4.0</version>
</dependency>
现在,当我执行&#34; gradle依赖&#34;在我的项目中,它正确地表明我应该通过传递依赖性解析获得solrj依赖,但它并不尊重4.4.0版本声明,而是我的项目依赖于版本5.5.4。
+--- a.b.c:depProject:1.1.0
| \--- org.apache.solr:solr-solrj:4.4.0 -> 5.5.4
这些行在依赖关系报告中多次出现,始终相同。
为什么Gradle&#34;升级&#34;我的依赖自动?有没有办法让它停止,除了直接依赖传递依赖,指定我想要的版本?
注意,如果我通过以下方式在项目中排除solrj依赖项:
compile ("a.b.c:depProject:1.1.0") {
exclude group:"org.apache.solr" module:"solr-solrj"
}
然后在得到的&#34; gradle依赖关系中没有solrj依赖关系&#34;打电话,所以没有其他地方可以在更高版本上依赖solrj。
我无法发布整个build.gradle,但我可以展示应用了哪些插件:
apply plugin:"idea"
apply plugin:"org.grails.grails-web"
apply plugin:"com.moowork.node"
apply plugin:"org.grails.plugins.views-json"
apply plugin: "org.grails.grails-gsp"
apply plugin: "maven"
apply plugin: "codenarc"
apply plugin: "jacoco"
apply plugin: "org.sonarqube"
apply plugin: "asset-pipeline"
答案 0 :(得分:0)
如果两个传递依赖项之间存在冲突,Gradle只会选择较新版本的依赖项。因此,要么您在gradle中发现了错误,要么项目中的其他内容依赖于
org.apache.solr:solr-solrj:5.5.4
跑步
gradle dependencies | grep -B5 solrj:5
看看是否真的没有依赖该版本。
你也可以强制某种分辨率,搜索gradle force version
会很快给你答案,但由于这会降级solrj,你应该在决定之前先找出错误。