私はgradleプロジェクトで特定のJavaリソースをフィルタリングしたいと思います。一部のファイルが内容だけを置き換える必要がある場合、一部のファイルの名前を変更する必要があります(内容が異なる場合)。gradle processresources異なる置き換えと名前の変更ルール
マイGradleのJavaプロジェクトの設定は次のとおりです。
> ls build/resources/main
file_c.txt
> cat build/resources/main/file_c.txt
my name is fool
test zzz
私はしかしリクたい:
はGradleの私が手
を構築:実行したら、
> cat build.gradle
apply plugin: 'java'
sourceSets {
main {
java {
resources {
srcDirs = [ "foo" ]
include '**/**'
}
}
}
}
processResources {
include '**/file_a.txt'
filter { String line ->
line
.replace("foo", "fool")
}
}
processResources {
include '**/file_b.txt'
rename { "file_c.txt" }
filter { String line ->
line
.replace("ipsum", "zzz")
}
}
> cat foo/file_a.txt
my name is foo
test ipsum
> cat foo/file_b.txt
lorem ipsum ...
両方のファイルを取得するには、file_b.txt
の名前が変更され、両方が特定のルールに置き換えられます。それを達成するための適切な方法は何ですか?
apply plugin: 'java'
sourceSets {
main {
java {
resources {
srcDirs = [ "foo" ]
include '**/**'
exclude '**/*.txt'
}
}
}
}
processResources {
with copySpec {
from 'foo/file_a.txt'
filter { String line ->
line
.replace("foo", "fool")
}
}
with copySpec {
from 'foo/file_b.txt'
rename { "file_c.txt" }
filter { String line ->
line
.replace("ipsum", "zzz")
}
}
}
私はあなたの意見を見ていますが、私は特定のファイルの特定のものをフィルタリングする必要があります。さらに、特定のファイルの名前を変更する必要があります –
あなたのユースケースを完全にgrokしてください。ターゲットファイルとテンプレートを正確に同じ名前にすることができないのはなぜですか?あなたは[freemarker](http://freemarker.org/)や[velocity](https://velocity.apache.org/)のようなテンプレート言語の使用を検討しましたか? –