Gradle, как отключить все переходные зависимости

Многие из моих банок имеют конфликтующие транзитивные зависимости (несколько весенних версий). Я хотел бы избежать унаследованных конфликтов версий, явно управляя всеми своими зависимостями. Можно ли отключить все транзитивные зависимости в Gradle?

Я знаю, что могу добавить transitive = false к каждой из моих зависимостей, но я надеюсь, что есть более простой способ.

compile(group: 'org.springframework', name: 'spring', version: '2.5.2') {
    transitive = false
}

person Mike Rylander    schedule 23.07.2013    source источник


Ответы (3)


В итоге я использовал:

configurations.all {
    transitive = false
}
person Mike Rylander    schedule 23.07.2013
comment
Другим решением является указание Gradle сбоить при конфликтах версий и явно разрешать тех (вместо явного управления всеми транзитивными зависимостями). - person Peter Niederwieser; 24.07.2013
comment
Если вы довольны своим собственным ответом, вы должны принять его, чтобы вопрос был помечен как отвеченный. - person Peter Niederwieser; 24.07.2013
comment
@PeterNiederwieser, вам нужно подождать 48 часов, чтобы принять свой собственный ответ. - person Mike Rylander; 24.07.2013

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

configurations {
    // other configurations e.g. - compile.exclude module: 'commons-logging'
    all*.transitive = false
}
person michal.kreuzman    schedule 30.11.2014

В моем случае у меня была зависимость проекта (модуля gradle). Я использовал следующее, чтобы исключить транзитивные зависимости в Gradle 3:

implementation(project(':<module_name>')) {
    transitive = false
}

Или в сценарии Котлина:

implementation(project(':<module_name>')) {
    isTransitive = false
}
person Brian Melton-Grace - MSFT    schedule 02.05.2018