1

我正在尝试在执行 Ant 脚本时将时间戳作为上下文参数写入我的 context.xml 中。

我正在尝试以下操作:

我的 context.xml

<Parameter name="deployingTimeStamp" 
    value="16.07.2012" <!-- shall be changed! -->
    override="true" />

我的 build.xml

<tstamp>
    <format property="time" pattern="dd.MM.yyyy"
    unit="hour"/>
</tstamp>

<replace file="${conf.dir}/dev/context.xml" >
    <replacefilter token="deployingTimeStamp" value="${time}" />
</replace>

不幸的是,它不会替换该值,它只是替换名称“deployingTimeStamp”本身并将其更改为当前日期。

我怎么解决这个问题?

4

1 回答 1

0

replacefilter 令牌将替换您定义的令牌。为什么不在 XML 中添加一个占位符值(即 [[buildTimeStamp]] ),然后使用:

<replace file="${conf.dir}/dev/context.xml" >
    <replacefilter token="[[buildTimeStamp]]" value="${time}" />
</replace>

所以你原来的 xml 将是

<Parameter name="deployingTimeStamp" 
value="[[buildTimeStamp]]" <!-- shall be changed! -->
override="true" />

基于评论讨论的其他提示:

您可能没有做的是将主要源文件复制到构建目录中以首先执行替换。这在构建脚本中是相当标准的,这就是为什么我提到你首先检查你的文件脱离源代码控制。如果您没有使用源代码管理并且在您的计算机上有一个文件夹,那么您需要先将该文件夹中的文件复制到另一个文件夹,然后再执行应用程序的替换和其他打包。

  <copy todir="../dest/dir">
    <fileset dir="src_dir" excludes="**/*.java"/>
  </copy>

类似于上面的内容,您将源代码复制到工作目录。然后你对它执行你的操作,然后当你有一个包时删除它(即jar文件或war文件或者如果是java的话)。您也可以在 Ant 的文档中查看删除功能:

于 2012-07-16T15:40:33.567 回答