我很确定这是一个简单的问题,我已经看过它之前没有确切的答案.
我有几个用于不同环境的属性文件,即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)