我有一个 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>
现在,当我对我的项目执行“gradle dependencies”时,它正确地表明我应该通过传递依赖解析获得 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"
}
然后在生成的“gradle dependencies”调用中没有 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"