Gradle переходная зависимость не относится к версии
У меня есть проект 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" для моего проекта, это правильно показывает, что я должен получить зависимость solrj через транзитивное разрешение зависимостей, но это не соответствует объявлению версии 4.4.0, вместо этого мой проект получает зависимость от версии 5.5 +0,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 в результирующем вызове "gradle зависимости", так что нет другого места, от которого зависит 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"
1 ответ
Gradle выбирает более новую версию зависимости только в случае конфликта между двумя переходными зависимостями. Так что либо вы нашли ошибку в Gradle, либо что-то еще в вашем проекте зависит от
org.apache.solr:solr-solrj:5.5.4
Просто беги
gradle dependencies | grep -B5 solrj:5
И посмотрите, действительно ли нет зависимости от этой версии.
Вы также можете вызвать определенное разрешение, ища gradle force version
даст вам ответы быстро, но так как это приведет к снижению рейтинга Solrj, вы должны сначала выяснить, что не так, прежде чем принимать решение.