我们有一个 ant 构建过程,当前正在构建我们的 war 文件。 战争中非编译文件(html)的子集需要令牌替换,但我不想在磁盘上执行此操作(我们不想保存更改)。 有什么办法可以在战争进行时进行代币替换吗?
当前战争进程
<war basedir="${company.webapps.dir}" destfile="${dist.dir}/${company.war.filename}"
webxml="${company.webapps.dir}/WEB-INF/web.xml" update="true">
<exclude name="WEB-INF/**" />
<exclude name="**/*.coffee" />
<exclude name="**/*.haml" />
<exclude name="**/*.sass" />
<exclude name="**/*.scss" />
<webinf dir="${company.webapps.dir}/WEB-INF/">
<include name="**/*" />
<exclude name="**/servlet-api.jar" />
</webinf>
<manifest>
<attribute name="build-timestamp" value="${build.info.timestamp}" />
</manifest>
</war>
如果没有增加大量时间,我可以接受这是战后任务
我对你的说法感到困惑“我不想在磁盘上这样做。(我们不想保存更改。)”。你能详细说明一下吗?您可以将
<copy/>
任务与 <filterset>
一起使用,这将允许您处理 HTML 文件并替换您想要在其中替换的任何标记。
然后您可以在战争中使用具有替换令牌的文件的复制版本。我尝试在战争本身中使用
<filterset>
,但它不适用于<fileset>
或<classes>
。你必须使用 <copy>
才能使用 <filterset>
,我一直都是这么做的。
“保存更改”是什么意思?您不必保存复制的文件,它们就像其他文件一样是工作文件。
<copy dir="${html.dir}"
todir="${html.work.dir}">
<filterset>
<filter token="${token1}" value="${value1}"/>
<filter token="${token2}" value="${value2}"/>
</filterset>
</copy>
<war destfile="${war.file}"
webxml="${web.xml.file}">
<classes dir="${html.work.dir}"/> <!-- The munged HTML files -->