用于版本控制和缩小javascript的Maven插件 单页Javascript应用程序

用于版本控制和缩小javascript的Maven插件 单页Javascript应用程序,javascript,git,build,maven,minify,Javascript,Git,Build,Maven,Minify,我已经构建了一个复杂的ajax驱动的单页webapp,它使用一个RESTful后端web服务来服务JSON。javascript被分成许多不同的文件,每个文件代表某种功能或组件 虽然该服务已经进行了alpha测试,但我只是单独提供所有这些文件,而没有进行缩小。但现在我想发布一个测试版,我真的需要合并文件,缩小它们,并对它们进行版本设置。我想使用Maven将其添加到构建过程中 Javascript文件类型 我正在使用以下“类型”的javascript文件,其中#3和#4是我关心的问题: 外部文件,

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

虽然该服务已经进行了alpha测试,但我只是单独提供所有这些文件,而没有进行缩小。但现在我想发布一个测试版,我真的需要合并文件,缩小它们,并对它们进行版本设置。我想使用Maven将其添加到构建过程中

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

  • 外部文件,例如从Google CDN提供的jquery和jquery ui。很少更改这些版本,可以手动处理
  • 我自己托管的Jquery插件,如fullcalendar或ui布局。同样,我很少将它们更新为新版本,并且可以手动处理
  • 应用程序范围的javascript代码。跨多个文件分布的自定义javascript,可以偶尔更改。需要加载所有这些文件才能使应用程序正常工作
  • 特定于功能的javascript代码。请求特定功能时按需加载的自定义javascript。此代码可能会经常更改,并且不会在启动时加载
  • 建立目标 我希望在构建过程中执行以下操作:

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

    • 是否有一个maven插件可以帮助缩小尺寸?理想情况下,我希望使用谷歌闭包编译器,但如果更简单的话,我会和其他人一起工作

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

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

    • 有没有一种解决方案可以在不破坏HTML的情况下压缩常规HTML文件中内联的javascript

    • 有没有一个解决方案,将压缩和版本我的CSS文件以及


    请看一看。它可以聚合各种js(以及css)文件,并对它们进行缩小和模糊处理。

    我已经成功地将RequireJS优化(使用Google Closure compiler+Dos串联)合并到Maven环境中(用于单页js应用程序)。有关详细信息,请参见我的问题和后续回答:


    您可能可以在此基础上进行扩展,以对缩小的JS工件进行版本和归档。

    这里有一个全新的Maven插件,用于完成此任务:

    感谢您提供的指针。对文件的版本控制有什么想法吗?使用yuicompressor maven插件的后缀参数。例如-${version}..您好Tauren,对于版本控制,您可以看一看您是否尝试过接受的答案?这一切对你来说是怎样的?我正在从事一个与你的项目相同的高级架构项目(我想这是现在的常识范例)。@Ates:事实上,没有。我还没有尝试过这两个答案。忙于项目的其他方面。希望不久的某个时候能做到这一点。如果您尝试一下,您能发布您的体验吗?我发现了一个Rails专用工具,它看起来可以完成我想要的大部分功能。当然,它不是一个maven工具,我也没有使用Rails,但它可能值得一看:@Ates:我已经尝试过yuicompressor maven插件,它工作得很好。它还有一个jslint目标,您可以使用它来验证js文件。