【问题标题】:Removing comment in ini file writen by ant when updating the ini file更新ini文件时删除由ant编写的ini文件中的注释
【发布时间】:2011-09-30 10:22:21
【问题描述】:

我有一个 ant 文件,它会更新 ant 文件中的数据,因为该 ini 文件已更新,并且在顶部有如下注释

#Thu, 07 Jul 2011 06:54:54 -0500

我不想要这个评论,因为我正在使用 parse_ini 通过 php 访问这个文件。由于此评论,我失败了

Comments starting with '#' are deprecated in build.ini on line 1

那么有什么办法可以让我在ini文件中得不到评论。

谢谢。

编辑:

<propertyfile file="build.ini">
  <entry key="build-number" type="int" operation="+" value="1" />
</propertyfile>

这会将我的 ini 文件内部版本号更新 +1

【问题讨论】:

标签: ant phpunit selenium-rc


【解决方案1】:

Martin 的评论为您指出了一种使用 replaceregexp 删除 cmets 的方法。 (我正要向您展示一个类似的想法,但使用 move、filterchain 和 striplinecmets。但是 replaceregexp 更紧凑。)

我的另一个建议是,由于您正在编辑 ini 文件,也许您应该使用专门的任务,而不是使用 PropertyFile 任务。 ant-contrib 中有一个 IniFile taks 可能会完成这项工作。

如果 replaceregexp 对您不起作用,因为您的文件中有其他 # cmets,而您只想删除该顶行,请尝试以下操作:

<target name="test">
  <propertyfile file="test.properties">
    <entry key="key" value="value"/>
  </propertyfile>
  <move file="test.properties" tofile="test.properties.tmp">
    <filterchain>
      <headfilter lines="-1" skip="1"/>
    </filterchain>
  </move>
  <move file="test.properties.tmp" tofile="test.properties"/>
</target>

输出:

$ cat test.properties
one=1
# existing comment

$ ant
Buildfile: C:\tmp\ant\build.xml

test:
[propertyfile] Updating property file: C:\tmp\ant\test.properties
     [move] Moving 1 file to C:\tmp\ant
     [move] Moving 1 file to C:\tmp\ant

BUILD SUCCESSFUL

Total time: 0 seconds

$ cat test.properties
one=1
# existing comment

key=value

【讨论】:

  • 为此我必须添加 ant-contrib jar 文件,我不想让用户感到复杂
猜你喜欢
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2016-07-29
  • 2015-02-05
  • 1970-01-01
  • 2013-05-21
  • 2010-10-28
相关资源
最近更新 更多