使用版本更新静态文件引用

时间:2011-12-19 03:38:15

标签: regex ant

在我们的Web应用程序中,我们有很多JS和CSS文件 每次部署代码时,我们都需要为这些引用添加版本号。这是为了确保用户始终获取文件的最新部署版本,并且不会从浏览器的缓存中提供该文件。我们计划使用我们的构建脚本执行此操作 我们需要在文件引用中添加一个参数,例如<script type="text/javascript src=./abc/test.js?v=1231 /&gt;。

我们需要为所有CSS和JS文件执行此操作 有人可以建议最好的appraoch这样做吗?

我们计划使用正则表达式执行此操作。我们将随机数附加到文件名。

请帮助我如何在HTML页面中找到所有CSS和JS引用?

1 个答案:

答案 0 :(得分:0)

您是否需要在HTML文件中找到所有CSS和javascript引用?在这些文件中使用可替换的令牌然后在ant中运行任务来进行替换会更简单。 Ant只需要找到令牌。

您可以使用ReplaceRegExp任务执行此操作(以进行替换),或者您可以使用FilterSet执行复制或移动(以替换目标文件的副本) )。

以下是使用ReplaceRegExp的示例:

<project default="test">

  <property name="build.version" value="1231"/>

  <target name="test">
    <replaceregexp match="\@BUILD_VERSION\@" replace="${build.version}">
      <fileset dir="test">
        <include name="*.html"/>
      </fileset>
    </replaceregexp>
  </target>

</project>

以下是运行构建之前的示例文件:

<html>
  <head>
    <script type="text/javascript" src="./abc/test.js?v=@BUILD_VERSION@"/>
  </head>
</html>

在此之后:

<html>
  <head>
    <script type="text/javascript" src="./abc/test.js?v=1231"/>
  </head>
</html>