使用正则表达式语法排除gradle中的依赖项jar

时间:2015-06-30 06:51:51

标签: gradle

我可以使用以下代码在gradle脚本中包含文件夹中的jar:

compile fileTree(dir: 'libs', include: '*.jar')// libs -> folder in root directory

我可以使用以下代码从gradle脚本中的文件夹中排除jar:

compile fileTree(dir: 'libs', include: '*.jar', exclude: 'antlr-2.7.7.jar')

我可以使用以下代码排除多个罐子:

compile fileTree(dir: 'libs', include: '*.jar', exclude: ['antlr-2.7.7.jar', 'antlr-runtime-3.3.jar'])

但我无法使用正则表达式排除jar,如下所示:

compile fileTree(dir: 'libs', include: '*.jar', exclude: 'antlr-.*.jar')

上述行不会给出任何错误,但不会排除两个antlr jar。是否有可能在gradle中实现这一目标。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用传递给exclude的闭包,例如:

compile fileTree(dir: 'libs', include: '*.jar', exclude: { e -> e.name.startsWith('ant') })

如果您拥有name元素,则也可以使用正则表达式,而不是startsWith

答案 1 :(得分:0)

根据documentation,您可以使用稍微简洁的语法来使用更多显式文件集,类似于Ant文件集,并使用集合差异运算符。

allJars=fileTree(dir: 'libs', include: '*.jar')
antlrJars=fileTree(dir: 'libs', include: 'antlr-.*.jar')
jarsToUse=allJars-antlrJars