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

Tau*_*ren 51 javascript git build minify maven

单页Javascript应用程序

我已经构建了一个复杂的ajax驱动的单页webapp,它使用一个服务于JSON的RESTful后端Web服务.javascript被分成许多不同的文件,每个文件代表某种特征或组件.

虽然该服务已经进行了alpha测试,但我只是在没有缩小的情况下单独提供所有这些文件.但是现在我想推出测试版,我真的需要组合文件,缩小它们并对它们进行版本化.我想使用Maven将其添加到我的构建过程中.

Javascript文件类型

我正在使用以下"类型"的javascript文件,其中#3和#4是我关注的问题:

  1. 外部文件,例如来自Google CDN的jquery和jquery-ui.很少更改这些版本,可以手动处理.
  2. 我自己托管的Jquery插件,例如fullcalendar或ui-layout.同样,我很少将这些更新到新版本并可以手动处理它.
  3. 应用程序范围的JavaScript代码.自定义javascript,分布在许多文件中,偶尔可以更改.需要加载所有这些文件才能使应用程序正常工作.
  4. 特定于功能的JavaScript代码.在请求特定功能时按需加载的自定义JavaScript.此代码可能会频繁更改,并且在启动时不会加载.

建立目标

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

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

问题

  • 是否有maven插件可以协助连接?

  • 有没有maven插件可以帮助缩小?理想情况下,我想使用Google Closure Compiler,但如果更简单,可以与其他人合作.

  • 是否有maven插件可以帮助进行版本控制?

  • 有没有办法让4型javascript文件具有独立的版本号?理想情况下,如果文件在版本2.0.5和2.0.6之间没有变化,则用户无需下载新版本,并且其缓存版本可以正常工作.我正在使用GIT进行源代码控制,那么有没有办法使用文件的GIT哈希码进行版本控制?

  • 有没有一种解决方案可以压缩常规HTML文件中内联的javascript而不会破坏HTML?

  • 是否有压缩和版本化我的CSS文件的解决方案?

Tay*_*ese 22

看看yuicompressor-maven-plugin.它可以聚合各种js(以及css)文件以及缩小和混淆它们.

  • 使用yuicompressor-maven-plugin的后缀参数.例如<suffix> - $ {version}.</ suffix>. (5认同)

Chr*_*lan 11

这是一个全新的Maven插件,针对这个任务:http://mojo.codehaus.org/webminifier-maven-plugin/