2013-11-14 140 views
14

如何忽略Gradle中的特定传递性依赖项?例如,许多库(如Spring和...)都依赖于commons-logging,我想用SLF4J(及其jcl-over-slf4j桥)代替commons-logging如何忽略Gradle中所有依赖项的特定传递依赖项

在我的gradle脚本中是否有任何提及它的方法,而不是依赖于依赖于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

相关问题