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, вы должны сначала выяснить, что не так, прежде чем принимать решение.

Другие вопросы по тегам