Ant 构建.xml仅替换令牌的一个实例



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

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

知道为什么它只替换此目录中的一个 html 文件中的此值吗?

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

<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目录。

相关内容

  • 没有找到相关文章

最新更新