Gradle 'include' 或 'exclude' 字符串列表

Gradle 'include' or 'exclude' List of strings

我的 jar 目录结构如下。

myDir
- /util/Util.jar
- /abcd/abcd.jar
- /parsing_jars/pars.jar

预期anotherDir结构应如下

anotherDir
- Util.jar
- abcd.jar
- pars.jar

我在复制任务中使用以下语法

task('copyUtil', type: Copy) {
    fileTree("$projectDir/myDir").each { file ->
        if (file.isFile())
            from file
    }
    include 'Util.jar', 'abcd.jar', 'pars.jar'
    into "anotherDir"
}

它工作正常,但如果我在属性文件中定义变量为

MY_VAR = '"Util.jar", "abcd.jar", "pars.jar"'

它将其视为一个完整的字符串,不包含任何文件。如何将此 MY_VAR 提供给 copy 任务,如下所示?

task('copyUtil', type: Copy) {
    fileTree("$projectDir/myDir").each { file ->
        if (file.isFile())
            from file
    }
    include "${MY_VAR}"
    into "anotherDir"
}

请注意: 我试图将该字符串转换为 ListArray 两者都不起作用...基本上它需要逗号分隔args.. include Javadoc 说 public AbstractCopyTask include(String... includes)

像下面这样的在这里不起作用:

def String[] tasksToUseAsDefault = "${SOME_VAR}".split(',')

def list = Arrays.asList("${SOME_VAR}".split("\s*,\s*"));

工作示例here

gradle.properties 像这样:

MY_VAR = Util.jar, abcd.jar, pars.jar

考虑这个任务:

task('copyUtil', type: Copy) {
    // ["**/Util.jar", "**/abcd.jar", ...]
    def matchStr = MY_VAR.split(",").collect{"**/" + it.trim()}

    from fileTree(".").include(matchStr).files
    into "anotherDir"
}