Я не могу заставить версию зависимости использовать Gradle. Моя цель - использовать версию 0.20.0.RELEASE
библиотеки Spring HATEOAS, но, несмотря на все мои усилия, она продолжает решать до 0.19.0.RELEASE
.Gradle Not Honoring Forced Dependency Version
Я предпринял ряд стратегий, как в изоляции, так и в сочетании друг с другом. Эти стратегии включают, но, возможно, не ограничиваются следующими (обратите внимание, что во всех случаях $springHateoasVersion
определен в файле gradle.properties
, который находится в каталоге, который является родительским для каталога для модуля, объявляющего зависимость Spring HATEOAS):
# 1 (в build.gradle
файле для модуля, который объявляет зависимость)
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
dependencies {
dependency group:'org.springframework.hateoas', name:'spring-hateoas', version:"$springHateoasVersion"
}
}
# 2 (в build.gradle
файле для модуля, объявляющего зависимость)
compile ("org.springframework.hateoas:spring-hateoas:$springHateoasVersion") { force = true }
# 3 (в build.gradle
файле родительского каталога)
subprojects {
configurations.all {
resolutionStrategy {
force "org.springframework.hateoas:spring-hateoas:$springHateoasVersion"
}
}
}
Я сделал все возможное, чтобы исследовать эту проблему:
Этот вопрос имеет принятый ответ, но не похоже, точное соответствие для проблемы, с которой я столкнулся: How can I force Gradle to set the same version for two dependencies?
Ни один из этих вопросов, похоже, не принял ответы: 1) Gradle is not honoring resolutionStrategy.force, 2) Forcing a module version has no effect on generated org.eclipse.wst.common.component.
В дополнение к тому, что мой проект сломан (потому что я использую неправильную версию Spring HATEOAS), я могу явно видеть, что Gradle «сознательно» выбирает неверную версию зависимостей, несмотря на все мои протесты. Когда я бегу ./gradlew dependencyInsight --dependency spring-hateoas
, я вижу следующий вывод:
org.springframework.hateoas:spring-hateoas:0.19.0.RELEASE (selected by rule)
org.springframework.hateoas:spring-hateoas:0.20.0.RELEASE -> 0.19.0.RELEASE
\--- project :Commons
\--- compile
Несмотря на название, dependencyInsight
задача содержит на удивление мало понимание который правило, вызванные Gradle выбрать версию неуместное зависимостей, не говоря уже о том, как я мог бы идти о обходя это правило.