我很想在gradle项目中过滤特定的Java资源。如果某些文件只应替换了内容,则还应重命名一些文件(并替换了不同的内容)。
我的gradle Java项目设置是:
> 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 ...
Run Code Online (Sandbox Code Playgroud)
一旦运行:
Gradle构建
我得到:
> ls build/resources/main
file_c.txt
> cat build/resources/main/file_c.txt
my name is fool
test zzz
Run Code Online (Sandbox Code Playgroud)
但是我想得到两个文件,其中只有一个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" )
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7127 次 |
| 最近记录: |