如何在创建战争时更改 Gradle 中 .properties 的内容
Posted
技术标签:
【中文标题】如何在创建战争时更改 Gradle 中 .properties 的内容【英文标题】:How to change contents of .properties in Gradle upon war creation 【发布时间】:2016-11-18 03:01:56 【问题描述】:我正在试验 Gradle 的战争插件。此时项目仍在使用 Ant。它是一个标准的 webapp 布局:
| - project
| ---- src/main/java
| ---- src/main/resource
| ---- src/main/webapp
| ---- src/main/webapp/WEB-INF/classes
在src/main/webapp/WEB-INF/classes
中有一个包含密钥jawr.debug.on
的属性文件。出于开发目的,它通常设置为true
。在发布阶段,使用 Ant 的 propertyfile 任务将此属性更改为 false
。
我无法在 Gradle 中找到类似的执行方式。我确实在下面找到了 sn-p,但它并没有在结果战争中改变所说的文件:
ant.propertyfile(
file: "jawr.properties")
entry( key: "jawr.debug.on", value: "false")
实现这一目标的正确方法是什么?
【问题讨论】:
【参考方案1】:一种方法是在创建战争期间对其进行过滤
war
rootSpec.eachFile
if (it.name == 'UserMessages.properties')
filter line ->
line.replace('@build.label@', "$buildLabel-$stage")
【讨论】:
那行得通。但是,这会产生一个问题,即不精确的字符串可能会导致替换未被处理。由于某种原因,将filter
替换为ant.propertyfile(file: it)
时会产生错误。有没有办法利用适当的属性替换而不是钝字符串替换?
据我所知,没有像您的用例这样的本地支持。过滤文件的选项相当有限。另见docs.gradle.org/current/userguide/…以上是关于如何在创建战争时更改 Gradle 中 .properties 的内容的主要内容,如果未能解决你的问题,请参考以下文章