Ant build.xml只替换一个令牌实例

时间:2014-12-29 20:23:13

标签: ant build

我使用替换任务替换我的html页面中的标记,但它似乎只是替换1个文件中的标记并跳过其余部分。

<replace dir="${basedir}" token="@CDN" value="&quot;${cdnUrl}&quot;">
  <include name="*.html"/>
</replace>

任何想法为什么它只在这个目录中的一个html文件中替换这个值?

1 个答案:

答案 0 :(得分:1)

也许你应该做这样的事情?

<replace dir="${basedir}" token="@CDN" value="&quot;${cdnUrl}&quot;">
    <include name="**/*.html"/>
</replace>

很难说。目录或子目录中的其他HTML文件是什么?

我不鼓励我的开发人员使用<replace>,因为您最终会替换已检入源控制系统的文件。开发人员提交他们的更改,使用<replace>修改的文件最终会更新参数。我们通常最终会有多次提交,因为开发人员试图解决这些混乱(通常会在生产部署中陷入困境)。

我建议复制文件,并使用<filterset><filter>进行替换:

<mkdir dir="${basedir}/target"/>  <!-- Or whatever you call your build directory -->
<copy todir="${basedir}/target">
    <fileset dir="${basedir}">
        <include name="**/*.html"/>
    </fileset>
    <filterset prefix="@" suffix="@">
        <filter token="CDN"
             value="&quot;${cdnUrl}&quot;"/>
    </filterset>
</copy>

这会将您的HTML文件复制到target目录(构建目录)中。当开发人员运行clean目标时,它只会删除target目录。