Gradle — принудительная версия зависимостей

#gradle #groovy

#gradle #groovy

Вопрос:

У нас есть старое приложение, которое использует Gradle 4.5. Кто-то добавил зависимости без явной версии.

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

Я пробовал приведенный ниже код, но он не работает:

 configurations.all {
    resolutionStrategy {
        force 'com.amazonaws:aws-java-sdk-dynamodb:1.11.390'
    }  
}
  

Комментарии:

1. Я имею в виду, что у нас есть aws-java-sdk-s3, использующий 1.11.390, но он загружает зависимость dynamodb с версией 1.11.887, и мне нужно использовать dynamodb версии 1.11.390

Ответ №1:

Вы должны иметь возможность использовать либо strictly или force здесь. Чтение:

https://docs.gradle.org/current/userguide/dependency_downgrade_and_exclude.html

должно помочь. Руководство более или менее точно описывает ваш сценарий.

<< редактировать после комментариев >>

Забыл, что вы используете gradle 4.5, я не думаю, что у вас есть strictly и force доступно для вас.

Другой способ — исключить транзитивную зависимость при определении зависимости, которая использует неправильную версию:

 apply plugin: "java"

repositories { 
  mavenCentral()
}

dependencies { 
  compile('whatever-dependency:is-pulling-in-wrong-version:1.0.0') {
    exclude group: 'com.amazonaws', module: 'aws-java-sdk-dynamodb'
  }
  compile 'com.amazonaws:aws-java-sdk-dynamodb:1.11.390'
}
  

это должно исключить зависимость dynamo из транзитивного дерева другой библиотеки и оставить вам версию, которую вы специально запрашиваете.

Комментарии:

1. Спасибо, но я уже пробовал и до сих пор не получаю более старую версию зависимостей.