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

2024-01-04

我想知道,是否有更简单的“类似 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
            }
        }
    }
}

我正在寻找的是完全绕过手动模式匹配。您知道有什么方法可以帮助我实现这一目标吗?谢谢。


我正在寻找的是完全绕过手动模式匹配

不太确定你的意思,因为你显然想要匹配自定义模式。无论如何,我会使用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 工件可以使用几乎任何版本号格式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用正则表达式过滤文件名 的相关文章

随机推荐