[英]Gradle transitive dependency doesn't respect version
我有一個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>
現在,當我在項目上執行“漸變依賴項”時,它正確地表明我應該通過傳遞依賴項解析來獲取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自動“升級”我的依賴項? 除了直接依賴傳遞依賴項(指定我想要的版本)以外,是否有其他方法可以阻止這種情況?
注意,如果我通過以下方式在項目中排除solrj依賴項:
compile ("a.b.c:depProject:1.1.0") {
exclude group:"org.apache.solr" module:"solr-solrj"
}
然后,在生成的“漸變依賴項”調用中沒有solrj依賴項,因此在該更高版本中沒有其他依賴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"
如果兩個傳遞依賴項之間存在沖突,則Gradle僅選擇較新版本的依賴項。 因此,您是否在gradle中發現了錯誤,或者項目中的其他內容取決於
org.apache.solr:solr-solrj:5.5.4
趕緊跑
gradle dependencies | grep -B5 solrj:5
看看是否真的不依賴該版本。
您還可以強制使用某個分辨率,搜索gradle force version
將快速為您提供答案,但是由於這會降低solrj的性能,因此您在決定之前應首先找出問題所在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.