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"
}
请注意: 我试图将该字符串转换为 List
或 Array
两者都不起作用...基本上它需要逗号分隔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"
}
我的 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"
}
请注意: 我试图将该字符串转换为 List
或 Array
两者都不起作用...基本上它需要逗号分隔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"
}