1

当我在 Netbeans 中编译我的项目时,我想自动生成一个包含自动递增和日期的内部版本号的文件,因此我将以下内容添加到我的项目 build.xml 文件中。

<target name="-pre-jar" >
    <propertyfile file="${src.dir}\buildstring.txt" >
        <entry key="devbuild" value="1" type="int" operation="+"/>
        <entry key="devbuildtime" type="date" value="now" pattern="yyyy MM dd hh_mm" />
    </propertyfile>
</target>

当 Ant 任务执行时,Ant 自动添加一个日期戳作为文件的第一行

#Tue, 12 Jun 2012 16:09:24 -0500
devbuild=8
devbuildtime=2012 06 12 04_09

有什么方法可以阻止 Ant 自动添加带有日期注释的第一行?

4

2 回答 2

3

PropertyFile Ant 任务是使用java.util.Properties对象实现的。该Properties.store()方法记录在以下注释中:

接下来,总是写入一个注释行,由一个 ASCII # 字符、当前日期和时间(就好像由 Date 的 toString 方法生成的当前时间一样)和一个由 Writer 生成的行分隔符组成。

因此,无法使用PropertyFile任务禁用日期注释。删除日期注释将需要不同的解决方案,例如后处理属性文件或使用不同的技术(例如,使用 Ant 脚本或自定义 Ant 任务)编写属性文件。

请参阅:删除属性文件 java 中的注释

于 2012-06-12T22:06:20.710 回答
2

这是我的解决方案: 1. 将属性写入临时文件 2. 将临时文件复制到最终的属性文件中使用filterchain以跳过第一行 3. 删除临时文件

<propertyfile file="temp.properties" >
    <entry  key="property.1" value="value1"/>
    <entry  key="property.2" value="value2"/>
</propertyfile>

<copy file="temp.properties" tofile="final.properties">
  <filterchain>
      <headfilter skip="1"/>
  </filterchain>
</copy>
<delete file="temp.properties"/>
于 2013-05-27T10:37:25.697 回答