一、概述
propertyfile是Ant内置任务,用于编辑属性文件,通过此任务可以对应用程序服务器和应用程序的配置文件进行无人参与的修改。可以对已有文件添加或修改属性。ant1.8起,原始属性文件的注释和布局会被保留。ant1.8.2起,原始属性文件的换行样式也将被保留。
二、属性
file:要编辑的属性文件的位置。
comment:文件头。
jdkproperties:ant1.8起,是否使用java.lang.Properties(会丢失文件的头信息和布局)。
支持以下嵌套元素:
entry:指定对属性文件的实际修改。具有以下属性:
key:属性名。
value:要设置的值(=)、要增加的值(+)、要减去的值(-)。
default:如果属性没有在文件中定义,属性设定为初始值。对于日期类型,允许使用关键字now。如果operation不为del,value与default至少指定一个。
type:数据类型,可选值为int、date或string,默认为string。
operation:对于所有类型,可选值为:del(删除一个条目)、+(添加一个值到已有的值中)、=(设置一个值替换已有的值)。对于date和int类型:-(从已有的值中减去一个值),默认为=。
pattern:对于int和date类型,如果设置此属性,将对值进行分析和格式化。
unit:对于date类型的+/-操作,其值对应的单位,可选值为:millisecond、second、minute、hour、day、week、month、year,默认为day。
对于=操作,规则如下:
如果只指定了value,则无论值是否存在,都会设置为value。
如果只指定了default,且属性已存在,则不做改变。
如果只指定了default,且属性不存在,则设置为default。
如果指定了value和default,且属性已存在,则设置为value。
如果指定了value和default,且属性不存在,则设置为default。
三、简单示例
执行前test.properties
key1=value1
key2=value2
num=10
build.xml<project>
<propertyfile file="test.properties" comment="My properties file">
<entry key="key1" value="value1"/>
<entry key="date" type="date" value="now" pattern="dd HH:mm"/>
<entry key="key2" operation="del"/>
<entry key="num" type="int" value="2" operation="-"/>
</propertyfile>
</project>
执行后test.properties#My properties file
#Sun, 08 Apr 2018 13:49:29 +0800
key1=value1
num=8
date=08 13\:49