Maven插件用于版本控制和缩小javascript

单页JavaScript应用程序

我已经构build了一个复杂的ajax驱动的单页web应用程序,它使用一个RESTful后端Web服务服务JSON。 JavaScript分成许多不同的文件,每个文件代表某种function或组件。

虽然服务已经进行了alphatesting,但是我只是单独提供所有这些文件而不用缩小。 但现在我想推出一个testing版,我真的需要合并文件,缩小它们,并对它们进行版本化。 我想使用Maven将其添加到我的构build过程中。

Javascript文件types

我正在使用以下“types”的JavaScript文件,其中#3和#4是我的顾虑:

  1. 外部文件,例如Google CDN提供的jquery和jquery-ui。 很less更改这些版本,可以手动处理。
  2. 我自己托pipe的jquery插件,如fullcalendar或UI布局。 再次,我很less更新这些新版本,并可以手动处理。
  3. 应用程序范围的JavaScript代码。 自定义JavaScript跨多个文件传播,可以偶尔更改。 所有这些文件需要加载的应用程序工作。
  4. function特定的JavaScript代码。 在请求特定function时按需加载的自定义JavaScript。 此代码可以相当频繁地更改,并且不会在启动时加载。

构build目标

我想在构build过程中执行以下操作:

  • 将所有types3的JavaScript文件连接在一起,缩小它们,并保存为带有版本号的单个文件。 例如: app-2.0.6.min.js ,其中2.0.6是Maven项目版本。
  • 所有types4文件应该单独缩小并保存为名称中带有版本号的单独文件。 例如: feature-abc-56ab32de29.min.js ,其中56ab32de29是该特定文件的版本号。
  • 使用<script>标签更新HTML文件,以指向具有正确版本号的JavaScript文件。
  • 更新加载types4特征javascript文件的Javscript文件指向正确的版本。

问题

  • 有没有一个maven插件可以协助连接?

  • 有没有一个maven的插件,将有助于缩小? 理想情况下,我想使用Google Closure编译器,但如果更简单,可以与其他人一起使用。

  • 有没有一个maven插件,将有助于版本?

  • 有没有办法让types4的JavaScript文件有独立的版本号? 理想情况下,如果一个文件在版本2.0.5和2.0.6之间没有变化,用户就不需要下载一个新的版本,他们的caching版本就可以正常工作。 我正在使用GIT进行源码控制,那么是否有办法使用文件的GIT哈希码进行版本控制?

  • 有没有一种解决scheme,将压缩在常规HTML文件中内联的JavaScript,而不杀死HTML?

  • 有没有一种解决scheme可以压缩和版本我的CSS文件?

看看这个yuicompressor-maven-plugin 。 它可以汇总各种js(以及css)文件以及缩小和混淆它们。

这是一个全新的Maven插件,它的目标是: http : //mojo.codehaus.org/webminifier-maven-plugin/

我已经在Maven环境(对于单页JS应用程序)中成功地包含了RequireJS优化(使用Google Closure编译器+进行连接)。 看到我的问题和后续答案的细节: Maven项目RequireJS编译与外部JS依赖关系

你可以扩展到版本和存档缩小JS工件。