WAR任务中的ANT文本替换

时间:2013-12-20 04:26:29

标签: ant war

我们有一个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后任务

1 个答案:

答案 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 -->