由于jnlp文件是一个xml文档,您可以使用xmltask
有关您的需求,请参阅:xml任务手册替换
一点Xpath知识不会有什么坏处,请参阅:
http://zvon.org/xxl/XPathTutorial/
http://www.w3schools.com/xpath/
我有一个ant任务,它创建了一个webstart jnlp文件。
它替换了模板文件中的@title@等标记:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="@codebase@">
<information>
<title>@title@</title>
</information>
<resources>
@jars@
</resources>
<application-desc main-class="@mainclass@"/>
</jnlp>
问题是我的lib/dir中有很多jar:Log4J.jar、xpp.jar、resources.jar。。。和1罐代币。
如何将@jars@令牌替换为jars文件名?使得输出变为:
<resources>
<jar href="log4J.jar"/>
<jar href="xpp.jar"/>
<jar href="resources.jar"/>
</resources>
这是我的蚂蚁项目的一部分:
<target name="webstart" description="Deploy as jnlp webstart">
<copy file="template.jnlp" tofile="test.jnlp">
<filterchain>
<replacetokens>
<token key="codebase" value="myCodebase" />
<token key="title" value="myTitle" />
<token key="jars" value="jar href="xxx.jar" />
</replacetokens>
</filterchain>
</copy>
</target>
<project/>
我用ant contrib实现了这一点(感谢Chad Nouis在属性中使用CDATA的提示):
<!-- Tricky part is XML content here CDATA Elements are needed, this is the first part-->
<property name="pre"><![CDATA[
<jar href="]]></property>
<!-- Tricky part is XML content here CDATA Elements are needed, this is the last part-->
<property name="after"><![CDATA["/>]]></property>
<!-- this will be our temp file-->
<delete file="temp.txt" failonerror="false"/>
<!-- for task from ant-contrib-->
<for param="file">
<fileset dir="dist" includes="*.jar"/>
<sequential>
<!-- write it into a file, using var/properties did not work-->
<echo file="temp.txt" append="true">${pre}@{file}${after}</echo>
</sequential>
</for>
<!-- load file content in property-->
<loadfile property="xml.data" srcfile="temp.txt"/>
<!-- finish-->
<copy file="template.jnlp" tofile="test.jnlp" overwrite="true">
<filterchain>
<replacetokens>
<token key="codebase" value="myCodebase" />
<token key="title" value="myTitle" />
<token key="jars" value="${xml.data}" />
</replacetokens>
</filterchain>
</copy>
链接:
- Ant contrib
- 用于任务
据我所知,您正试图用文本XML替换@jars@令牌。看看这是否是你想要的:
<target name="run">
<property name="xml.data"><![CDATA[
<jar href="log4J.jar"/>
<jar href="xpp.jar"/>
<jar href="resources.jar"/>
]]></property>
<copy file="template.jnlp" tofile="test.jnlp">
<filterchain>
<replacetokens>
<token key="codebase" value="myCodebase" />
<token key="title" value="myTitle" />
<token key="jars" value="${xml.data}" />
</replacetokens>
</filterchain>
</copy>
</target>
有关您的需求,请参阅:xml任务手册替换
一点Xpath知识不会有什么坏处,请参阅:
http://zvon.org/xxl/XPathTutorial/
http://www.w3schools.com/xpath/