使用ANT替换基于属性文件的所有标记

Gro*_*fit 13 ant tokenize

我很确定这是一个简单的问题,我已经看过它之前没有确切的答案.

我有几个用于不同环境的属性文件,即xxxx-dev,xxxx-test,xxxx-live

属性文件包含以下内容:

server.name=dummy_server_name
server.ip=127.0.0.1
Run Code Online (Sandbox Code Playgroud)

我使用的模板文件看起来像:

<...>
   <server name="@server.name@" ip="@server.ip@"/>
</...>
Run Code Online (Sandbox Code Playgroud)

以上是一个非常原始的例子,但我想知道是否有办法告诉ANT基于属性文件替换所有令牌,而不是必须为每个令牌行硬编码...即

<replacetokens>
   <token key="server.name" value="${server.name}"/>
   <token key="server.ip" value="${server.ip}"/>
</replacetokens>
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒!

mar*_*ton 16

您可以指定从中读取令牌的列表中的属性文件"替换"任务使用replacefilterfile:

<replace file="input.txt" replacefilterfile="properties.txt"/>
Run Code Online (Sandbox Code Playgroud)

同样,在过滤器链中,您可以使用'replacetokens'propertyfile:

这会将sample.properties中的每个属性文件条目视为标记/密钥对:

<loadfile srcfile="${src.file}" property="${src.file.replaced}">
  <filterchain>
    <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens">
      <param type="propertiesfile" value="sample.properties"/>
    </filterreader>
  </filterchain>
</loadfile>
Run Code Online (Sandbox Code Playgroud)