我有两个文件local.properties.template,另一个是test.properties文件。
local.properties.tamplate看起来像
dir.source=@deploy.dir@/data/source
dir.storage=@deploy.dir@/data/storage
dir.reports=@deploy.dir@/data/reports
dir.scripts=@deploy.dir@/data/scripts
dir.dictionary=@deploy.dir@/data/dictionary
moveit.dir=@moveit.dir@
moveit.enabled=@moveit.enabled@
moveit.host=@moveit.host@
moveit.path=@moveit.path@
moveit.user=@moveit.user@
moveit.pass=@moveit.pass@
moveit.root=@moveit.root@
moveit.url=@moveit.url@
和test.properties看起来像
moveit.dir=D:\\data\\moveit
moveit.enabled=false
moveit.host=thmdsdev0.tsh.tho.com
moveit.path=/moveitdmz
moveit.user=muttt
moveit.pass=ssss
moveit.root=/Home/MeaningfulUse
moveit.url=https://thmdsdev00.tsh.tho.com/moveitdmz
我想通过ant来读取test.properties中的值,例如moveit.user并将其粘贴或添加到local.properties.template中代替@ moveit.user @并对所有变量都相同。然后我将更改local.properties.template文件的名称为local.properties并将其移动到其他文件夹
答案 0 :(得分:1)
如果我理解你的问题,你可以使用Filter Chain和Replace Tokens来达到这个效果。例如:
<copy file="${PROP.your.path}/local.properties.template"
tofile="${PROP.your.path.destination}/local.properties"
overwrite="true">
<filterchain>
<replacetokens>
<token key="@moveit.dir@" value="${moveit.dir}"/>
<token key="@moveit.dir2@" value="${moveit.dir2}"/>
</replacetokens>
</filterchain>
</copy>
答案 1 :(得分:0)
我以下面的方式创建了蚂蚁脚本,它运行正常。
<project name="replace_and_copy" basedir="." default="usage">
<!--taskdef resource="net/sf/antcontrib/antcontrib.properties"/-->
<taskdef resource="net/sf/antcontrib/antlib.xml"/>
<macrodef name="copy-and-filter">
<sequential>
<copy tofile="local_for_test_copy.properties" file="templates/local.properties.test.template" overwrite="true">
<filterset recurse="true">
<filtersfile file="Properties/${deploy.env}/local_for_${deploy.env}.properties"/>
</filterset>
</copy>
</sequential>
</macrodef>
<target name="env.copy.local.props">
<copy-and-filter />
<for param="host" list="${deploy.host}">
<sequential>
<copy todir="\\@{host}\${deploy.path}\conf\"
file="local_for_test_copy.properties"
overwrite="true"/>
</sequential>
</for>
</target>
</project>