从Apache的Ant PropertyFile任务中删除日期注释

时间:2010-08-10 18:23:48

标签: java ant

我正在使用构建脚本中显示的属性文件任务:

<target name="build-brand" depends="-init" description="Adds version information to branding files.">
    <propertyfile file="${basedir}/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties">
        <entry key="currentVersion" value="${app.windowtitle} ${app.version}" />
    </propertyfile>
</target>

该任务按预期工作,但每次构建项目时,Bundle.properties文件的日期注释行都会使用当前时间戳更新。即使app.version变量没有改变也会发生这种情况,并导致对仅包含以下差异的版本控制进行不必要的提交:

--- Base (BASE)
+++ Locally Modified (Based On LOCAL)
@@ -1,4 +1,4 @@
-#Thu, 22 Jul 2010 15:05:24 -0400
+#Tue, 10 Aug 2010 13:38:27 -0400

如何阻止在.properties文件中添加或删除此日期注释?我在propertyfile嵌套的entry元素中考虑了删除操作,但是需要一个键值。

3 个答案:

答案 0 :(得分:5)

这不是一个很好的解决方案,但如何一起删除评论呢?

<target name="build-brand" depends="-init" description="Adds version information to branding files.">
    <propertyfile file="${basedir}/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties">
        <entry key="currentVersion" value="${app.windowtitle} ${app.version}" />
    </propertyfile>
    <replaceregexp file="${basedir}/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties" match="^#.*\n" replace=""/>
</target>

答案 1 :(得分:1)

如果您需要在文件中放置一个属性,只需使用echo:

<echo output="somefiles.properties">lastmodified=${lastmodified}</echo>

答案 2 :(得分:0)

尝试:<propertyfile file="..." comment="">

编辑:哪些可能无效:(。看起来罪魁祸首实际上是Properties.store(OutputStream, String)

  

接下来,注释行始终是   写的,由ASCII组成#   字符,当前日期和时间   (好像是由toString方法生成的   当前时间的日期)和a   行生成的行分隔符   作家。