我使用替换任务来替换我的 html 页面中的令牌,但它似乎只是替换 1 个文件中的令牌并跳过其余文件。
<replace dir="${basedir}" token="@CDN" value=""${cdnUrl}"">
<include name="*.html"/>
</replace>
知道为什么它只替换此目录中的一个 html 文件中的此值吗?
也许你应该做这样的事情?
<replace dir="${basedir}" token="@CDN" value=""${cdnUrl}"">
<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=""${cdnUrl}""/>
</filterset>
</copy>
这会将您的 HTML 文件复制到target
目录(即构建目录)中。当开发人员运行clean
目标时,它只是删除该target
目录。