使用Ant构建的xml中值/版本/日期替换的占位符



我有30多个odx-d文件(odx-d只是具有不同扩展名的xml文件(。所有文件都有通用标签:

<DOC-REVISION>
<REVISION-LABEL>01.02.03-04</REVISION-LABEL>
<STATE>RELEASE</STATE>
<DATE>2018-11-14T16:26:00+01:00</DATE>
</DOC-REVISION>

在每次发布时,我都需要更改所有文件中的这些值。

注意:使用Java进行操作是不可能的,因为在构建时只对所有这些文件进行压缩,而不使用Java来操作这些文件。

请建议一种方法,让一个文件(你建议的任何文件类型(,在那里我可以在所有这些文件中拥有这些值和标签的占位符。

谢谢。!

这可以通过以下步骤实现:

  1. 将公共标签值替换为占位符,例如CCD_,@state@@date@

  2. 将每个文件复制到临时位置

  3. 使用具有嵌套<replacefilter .../>元素的<replace file="${dest.file}">任务在复制的文件中执行替换

  4. 将转换后的文件压缩到临时位置

例如,使用如下模板文件"template.xml":

<DOC-REVISION>
<REVISION-LABEL>@revision@</REVISION-LABEL>
<STATE>@state@</STATE>
<DATE>@date@</DATE>
</DOC-REVISION>

您可以用这个ant目标设置实际值(跳过zip部分(:

<target name="test">
<property name="my.revision" value="01.02.03-04"/>
<property name="my.state" value="RELEASE"/>
<tstamp>
<format property="my.date" pattern="yyyy-MM-dd hh:mm z"/>
</tstamp>
<property name="template.file" value="./template.xml"/>
<property name="dest.file" value="./doc.odx"/>
<delete file="${dest.file}" quiet="true"/>
<copy toFile="${dest.file}" file="${template.file}"/>
<replace file="${dest.file}">
<replacefilter token="@revision@" value="${my.revision}"/>
<replacefilter token="@state@" value="${my.state}"/>
<replacefilter token="@date@" value="${my.date}"/>
</replace>
</target>

多个文件的解决方案

  1. 将值替换为占位符@revision@、@state@、@date@,并放置到模板文件夹中。

  2. 使用filterset从模板到dest目录执行复制操作。

示例:模板目录:"fromDir",目标:"toDir">

1( 模板文件:

<DOC-REVISION>
<REVISION-LABEL>@revision@</REVISION-LABEL>
<STATE>@state@</STATE>
<DATE>@date@</DATE>
</DOC-REVISION>

2( 声明属性并执行测试目标操作。

<!-- Properties -->
<property name="version" value="01.02.03-04" />
<property name="state" value="RELEASE" />
<tstamp>
<format property="now" pattern="yyyy-MM-dd'T'HH:mm:ss.SSSXXX"/>
</tstamp>
<!-- Target -->
<target name="test">
<copy todir="${toDir}">
<fileset dir="${fromDir}" />
<filterset>
<filter token="revision" value="${version}" />
<filter token="state" value="${state}" />
<filter token="date" value="${now}" />
</filterset>
</copy>
</target>

谢谢!

最新更新