2013-11-14 3 views
14

Как я могу игнорировать определенную транзитивную зависимость в Gradle?Как игнорировать определенную транзитивную зависимость от всех зависимостей в Gradle

Например, многие библиотеки (такие как Spring и ...) зависит от commons-logging, я хочу, чтобы заменить commons-logging с SLF4J (и его JCL-над-SLF4J моста).

Можно ли в моем сценарии градации упомянуть об этом один раз, а не для каждой зависимости, которая зависит от commons-logging?

Я думал о сценарии, итерации по всем зависимостям и добавлению некоторого exclude на все из них, есть ли лучшее решение? И как выглядит этот сценарий?

+0

Пожалуйста, попробуйте стратегии разрешения: http://stackoverflow.com/questions/23124509/how-to-exclude-specific-jars-from-web-inf-lib/30393301#30393301 – smilyface

ответ

18
configurations { 
    compile.exclude group: 'commons-logging' 
} 
+8

Или: ' configurations.all {исключить группу: 'commons-logging'} '. –

+1

Есть ли способ исключить определенную версию группы? – JayKay

13

Пришел здесь с той же проблемой, но в итоге использовал следующую замену. Проводя его для полноты.

configurations.all { 
    resolutionStrategy.eachDependency { 
     if(it.requested.name == 'commons-logging') { 
      it.useTarget 'org.slf4j:jcl-over-slf4j:1.7.7' 
     } 
    } 
} 
+1

Престижность вашего ответа и элегантность Gradle при решении таких задач. –

+1

Я хотел бы добавить, что в то же время новая версия Gradle отсутствует, и у нее есть замены модулей. Еще не пробовал, но похоже, что они могут сделать то же самое. – user2543253

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