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

标签 java xml eclipse ant placeholder

我有超过 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 进行操作是不可能的,因为构建时只是对所有这些文件进行 zip 压缩,而不是使用 Java 来操作这些文件。

请建议一种方法来创建一个文件(您建议的任何文件类型),我可以在其中为所有这些文件中的标签提供这些值和占位符。

谢谢!

最佳答案

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

  1. 用占位符替换常见标签值,例如@revision@ , @state@ , @date@

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

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

  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>

关于java - 使用 Ant 构建在 xml 中替换值/版本/日期的占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53774369/

相关文章:

java - 创建联系人列表程序

javascript - 在 Chrome 的新窗口中呈现 XML

c# - 从 C# 中的 XmlDocument 中读取特殊字符

sql - 如何在 XML 列上使用 xpath 来选择行?

java - 读取文件时表达式开始非法

java - 编译器一直在说Scanner的未定义构造函数。

java - Eclipse添加插件开发

java - 如何在 Eclipse 正则表达式搜索中首先匹配检查前驱?

java - 方法未按时间顺序调用

eclipse - 在 eclipse luna 4.4.0 中安装 sonarlint。失败