我试图在Gradle 1.12中声明一个编译依赖项,其中多个项目共享相同的exclude子句(这是为了避免在任何地方重复排除)。我知道我可以这样做:
configurations {
compile.exclude group: 'com.google.gwt'
all*.exclude group: 'com.google.guava'
}
但这会影响所有配置。我想要的是这样的(在Gradle 1.12中不起作用,如下所示):
compile (
["org.jboss.errai:errai-data-binding:2.4.4.Final"]
,["org.jboss.errai:errai-data-ioc:2.4.4.Final"]
){
exclude group: 'com.google.gwt'
exclude group: 'com.google.guava'
}
所以我可以把我需要排除的所有依赖项集中在一个地方,并且仍然可以在其他地方:
compile 'com.google.guava:guava:17.0'
更新 只是为了澄清,我唯一的目标是替换这段代码:
compile ('bla.bla.bla:1.0'){
exclude 'same.component:1.0' //Ugly repeat
}
compile ('boo.boo.boo:1.0'){
exclude 'same.component:1.0' //Ugly repeat
}
compile ('uh.uh.uh:1.0'){
exclude 'same.component:1.0' //Ugly repeat
}
compile ('oh.oh.oh:1.0'){
exclude 'same.component:1.0' //Ugly repeat
}
像这样短暂而甜蜜(目前不工作):
compile( 'bla.bla.bla:1.0'
,'boo.boo.boo:1.0'
,'uh.uh.uh:1.0'
,'oh.oh.oh:1.0'
)
{
exclude 'same.component:1.0' //Only once! Sweet!
}
答案 0 :(得分:6)
在仍然能够使用compile 'com.google.guava:guava:17.0'
语法的情况下,无法将每个依赖项排除在外。 configurations.compile.exclude ...
只会影响compile
配置(以及从中继承的配置),并且几乎总是优先于每个依赖项排除。
另一种解决方案是将依赖性声明分解为:
ext.libs = [
error_data_ioc: dependencies.create("org.jboss.errai:errai-data-ioc:2.4.4.Final") {
exclude group: 'com.google.gwt'
exclude group: 'com.google.guava'
}
]
然后,您可以在任何需要的地方重用这些声明(例如dependencies { compile libs.error_data_io }
;也可以从子项目开始工作)。如果你真的想要,你也可以在多个声明中共享相同的{ exclude ... }
块(通过将它分配给局部变量)。