为什么ant中的propertiesFile任务会改变文件中属性的顺序?

时间:2012-06-06 19:22:51

标签: ant properties properties-file

获取

等属性文件
#File One
#Section One
sect1.number=Test1
sect1.sample=Test2
sect1.test=Test3

#Section Two
sect2.number=Test1
sect2.sample=Test2
sect2.test=Test3

After running this ant:

<property file="sample1.properties"/>
<propertyfile file="sample1.properties">
   <entry key="sect1.number" value="ABC"/>
   <entry key="sect1.sample" value="B"/>
   <entry key="sect1.test" value="ABC"/>
   <entry key="sect2.number" value="B"/>                    
   <entry key="sect2.sample" value="ABC"/>
   <entry key="sect2.test" value="B"/>
</propertyfile>
 

The properties file will end as:
#Updated on blah
sect2.sample=ABC
sect2.test=B
sect1.sample=B
sect1.number=ABC
sect2.number=B
sect1.test=ABC

请注意,评论已消失且订单不同。

我在做什么,有什么工作吗?

Grae

1 个答案:

答案 0 :(得分:1)

我猜你使用的是早于1.8的Ant版本。

从1.8开始,propertyfile task默认为“布局保留”模式,该模式保留注释(并且可能保留属性顺序,但我不确定)。

在该版本中,您可以通过指定jdkproperties=true

恢复旧行为

原始文件

$ cat sample1.properties.original
#File One
#Section One
sect1.number=Test1
sect1.sample=Test2
sect1.test=Test3

#Section Two
sect2.number=Test1
sect2.sample=Test2
sect2.test=Test3

在我的Ant 1.8.2环境中使用您的构建文件创建的版本

$ cat sample1.properties.default
#Mon, 11 Jun 2012 14:39:08 +0000
#File One
#Section One
sect1.number=ABC
sect1.sample=B
sect1.test=ABC

#Section Two
sect2.number=B
sect2.sample=ABC
sect2.test=B

在我的Ant 1.8.2环境中使用您的构建文件创建的版本,但指定jdkproperties =“true”

$ mv sample1.properties sample1.properties.jdk
$ cat !$
cat sample1.properties.jdk
#Mon Jun 11 14:41:01 GMT 2012
sect2.test=B
sect1.test=ABC
sect2.sample=ABC
sect2.number=B
sect1.sample=B
sect1.number=ABC

我的蚂蚁环境

$ ant -version
Apache Ant(TM) version 1.8.2 compiled on December 20 2010