我试图在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!
}
最佳答案
在仍然能够使用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 ... }
块(通过将其分配给局部变量)。
关于syntax - Gradle多个编译依赖项语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23508612/