Gradle 格拉德尔';包括';或';排除';字符串列表

Gradle 格拉德尔';包括';或';排除';字符串列表,gradle,groovy,build,Gradle,Groovy,Build,我的jardir结构如下所示 myDir - /util/Util.jar - /abcd/abcd.jar - /parsing_jars/pars.jar 预期的另一个目录结构应如下所示 anotherDir - Util.jar - abcd.jar - pars.jar 我正在使用下面的语法作为我的复制任务 task('copyUtil', type: Copy) { fileTree("$projectDir/myDir").each { file -&

我的jardir结构如下所示

myDir
- /util/Util.jar
- /abcd/abcd.jar
- /parsing_jars/pars.jar
预期的另一个目录结构应如下所示

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"
}
请注意:我试图将该字符串转换为
列表
数组
但两者都不起作用。。。基本上它需要逗号分隔的参数
include
Javadoc说
PublicAbstractCopyTask包含(字符串…包含)

下面的内容在这里不起作用:

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

工作示例

使用
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"
}

这回答了你的问题吗?不,我试图将该字符串转换为
List
Array
这两种格式都不起作用。。。基本上它需要逗号分隔的参数
include
Javadoc说
public AbstractCopyTask include(String…includes)
Hi@michael easter是的,如果您的解决方案按原样运行,它会非常有效,但我在问题中遗漏了一些重要的内容。因此,提供的解决方案不适用于
filetree
结构。我已经用
filetree
结构更新了我的问题。你能帮我查一下吗?抱歉没有首先澄清问题。
filetree
用于
flattern
目录结构请使用
myDir
结构和所需的
anotherDir
结构(即子文件夹等)更新问题。这可能有助于我们理解为什么需要扁平化。我相信这个问题还没有完全描述。我已经更新了GitHub和答案。如果回答了您的问题,请接受并投票。
task('copyUtil', type: Copy) {
    // ["**/Util.jar", "**/abcd.jar", ...]
    def matchStr = MY_VAR.split(",").collect{"**/" + it.trim()}

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