我很想知道,如果有更简单的“Gradle-like”方式,如何在目录中列出文件但仅限于那些匹配正则表达式的文件。目前我的解决方案看起来像这样
File fileList = file("${moduleDir}/target")
// pattern for maven artifact
def pattern = ~"^.*-[0-9]\\.[0-9]\\.[0-9](-SNAPSHOT)?\\.jar\$"
fileList.listFiles().each { file ->
if (file.isFile()) {
if (pattern.matcher(file.getName())) {
copy {
from file.getPath()
into targetDir
}
}
}
}
我正在寻找的是完全绕过手动模式匹配。你知道任何方法可以帮助我实现这个目标吗?感谢。
答案 0 :(得分:2)
我正在寻找的是完全绕过手动模式匹配
不太清楚你的意思,因为你显然想要匹配自定义模式。在任何情况下,我都使用Copy
任务而不是copy
方法,并且会在复制操作中“进行”过滤。类似的东西:
task copyArtifacts(type: Copy) {
from(fileTree(fileList).files) { // flattening
include {
it.file.name ==~ "^.*-[0-9]\\.[0-9]\\.[0-9](-SNAPSHOT)?\\.jar\$"
}
}
into targetDir
}
PS:这些是你自己的文物吗?我问,因为一般来说,Maven工件几乎可以使用任何版本号格式。