2016-12-23 11 views
0

Я не могу заставить версию зависимости использовать 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 выбрать версию неуместное зависимостей, не говоря уже о том, как я мог бы идти о обходя это правило.

ответ

0

Я нашел решение этой проблемы here. Конечно, это была единственная вещь, которую я не пробовал, потому что она «не казалась материальной». : -/

Для того, чтобы все работало, я добавил следующее к build.gradle файлу родительского директории (по отношению к директории для модуля, который объявлен зависимость от Spring HATEOAS).

subprojects { 
    apply plugin: 'io.spring.dependency-management' 

    dependencyManagement { 
     applyMavenExclusions false 
    } 

    ext['spring-hateoas.version'] = "$springHateoasVersion" 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^