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 に答える