簡體   English   中英

Gradle傳遞依賴項不尊重版本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM