gpt4 book ai didi

gradle - Gradle传递依赖项不尊重版本

转载 作者:行者123 更新时间:2023-12-03 04:24:25 25 4
gpt4 key购买 nike

我有一个Gradle 3.5项目,在该项目中,我依赖 Artifact :

compile "a.b.c:depProject:1.1.0"

“depProject”是一个Maven项目,在该项目的pom文件中,它依赖于另一个 Artifact :
   <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的级别,因此您在决定之前应首先找出问题所在。

关于gradle - Gradle传递依赖项不尊重版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47719680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com