我们有一个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>
如果它没有增加大量时间,我可以将其作为WAR后任务
答案 0 :(得分:0)
我对你的陈述感到困惑“我不想在磁盘上这样做。(我们不想保存更改。)”。你能详细说明吗?您可以将<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 -->