gradle: как реализовать версии всего поддерева? - PullRequest
0 голосов
/ 24 мая 2019

есть библиотека x.у него много зависимостей и зависимостей зависимостей.каждая версия x имеет различное дерево зависимостей

x
|- x1
|  |- ...
|
|- ...

, в моем проекте некоторые другие мои зависимости включают x с какой-то конкретной версией.некоторые другие зависимости включают в себя зависимости x1, x2, xk разных версий

, что я хочу сделать, чтобы явно установить версию x и принудительно установить все ее зависимости в объявленной версииx я выбрал

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Если нет другого пути к зависимостям x, то исправление версии x будет иметь такой эффект.

Однако, поскольку Gradle разрешает конфликт между all участники, если зависимость x, скажем y, также оказывается зависимостью z, которая является еще одной зависимостью вашего проекта, тогда обе версии y будут использоваться в разрешении конфликтов.

Один из способов обнаружения этих проблем и, следовательно, не удивления конфликтом при разрешении неожиданной версии, - это использовать стратегию разрешения failOnVersionConflict , так как она не даст разрешения, если два пути принесут y, но с разными версиями.

Gradle 5.4 и более ранних версий не имеет встроенного механизма для выполнения того, что вы просите.

0 голосов
/ 24 мая 2019

Вы пробовали смотреть на ограничения зависимости gradle ?

 dependencies {
    implementation 'org.apache.httpcomponents:httpclient'
    constraints {
        implementation('org.apache.httpcomponents:httpclient:4.5.3') {
            because 'previous versions have a bug impacting this application'
        }
        implementation('commons-codec:commons-codec:1.11') {
            because 'version 1.9 pulled from httpclient has bugs affecting this application'
        }
    }
}

Вы можете поместить ограничения в общий раздел, а затем просто объявить зависимости без версий в других местах.

...