2

我想知道,如果有更简单的“类似 Gradle”的方式,如何列出目录中的文件,但只有那些匹配正则表达式的文件。目前我的解决方案看起来像这样

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
            }
        }
    }
}

我正在寻找的是完全绕过手动模式匹配。您是否知道任何可能帮助我实现这一目标的方法?谢谢。

4

1 回答 1

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

于 2013-01-29T14:38:14.523 回答