使用正则表达式过滤文件名

时间:2013-01-29 13:45:56

标签: groovy gradle

我很想知道,如果有更简单的“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
            }
        }
    }
}

我正在寻找的是完全绕过手动模式匹配。你知道任何方法可以帮助我实现这个目标吗?感谢。

1 个答案:

答案 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工件几乎可以使用任何版本号格式。