Java 战争创建后如何更改Gradle中.properties的内容

Java 战争创建后如何更改Gradle中.properties的内容,java,gradle,war,Java,Gradle,War,我正在试验Gradle的war插件。此时,项目仍在使用Ant。这是一个标准的webapp布局: | - project | ---- src/main/java | ---- src/main/resource | ---- src/main/webapp | ---- src/main/webapp/WEB-INF/classes 在src/main/webapp/WEB-INF/classes中有一个属性文件,其中包含keyjawr.debug.on。出于开发目的,它通常设置为true。在

我正在试验Gradle的war插件。此时,项目仍在使用Ant。这是一个标准的webapp布局:

| - project
| ---- src/main/java
| ---- src/main/resource
| ---- src/main/webapp
| ---- src/main/webapp/WEB-INF/classes
src/main/webapp/WEB-INF/classes
中有一个属性文件,其中包含key
jawr.debug.on
。出于开发目的,它通常设置为
true
。在发布阶段,使用Ant的propertyfile任务将此属性更改为
false

在格拉德尔,我找不到类似的方式来完成这个任务。我确实在下面找到了这个片段,但它并没有改变所产生的战争中的上述文件:

ant.propertyfile(
    file: "jawr.properties") {
    entry( key: "jawr.debug.on", value: "false")
}

实现这一点的正确方法是什么?

一种方法是在战争期间过滤它

war {   
        rootSpec.eachFile {
            if (it.name == 'UserMessages.properties') {
                filter { line ->
                    line.replace('@build.label@', "${buildLabel}-${stage}")
                }
            }
        }
    }

这很有效。但是,这会产生一个问题,即不精确的字符串可能导致无法处理替换。由于某种原因,在将
过滤器
替换为
ant.propertyfile(文件:it)
时会产生错误。有没有什么方法可以使用正确的属性替换而不是直接的字符串替换?据我所知,像你的用例这样的东西没有原生的支持。过滤文件的选项相当有限。另见