在使用Java工具包中的几乎所有资产管道工具一段时间后,我得出了一些结论:
基于Java的工具
有一些工具,但是最受欢迎的是JAWR和Wro4J。这两个最大的问题是它们大多基于Rhino(WRO4J现在具有一些Node支持),并且与基于Node的工具相比,Rhino的运行速度很慢。您还必须考虑到JavaScript工具正在迅速成熟,因此您应该寻找可以快速移动的工具。
WRO4J-支持非常棒,Maven和Eclipse集成非常棒,插件列表非常广泛,并且框架足够灵活,您可以使用一些弯头的润滑脂来编写所需的插件。如果您局限于基于Java的资产管道,那么这肯定是可行的方法。Wro4j的问题在于,相对于基于Node的工具而言,它运行缓慢(即使启动了Node进程)。
要给出一些现实世界的数字,在包含RhESS的25个资产捆绑包中进行汇编和级联时,在使用Rhino的2013 iMac(具有16G RAM)上使用Rhino时,CSS CoffeeScript和JavaScript大约需要35s,而使用Wro4j的Node支持大约需要15s。在微弱的MacBook Air上使用Grunt + Node大约需要2秒钟。
JAWR-集成和功能列表都不错,但是文档并不出色,编写自己的插件可能有些棘手。当我最初写这篇文章时,JAWR处于中断4年的中期,但是从2014年1月起,它现在正在积极开发中。如果您选择研究Java Tools,这是值得研究的。
基于节点的工具(与Ant / Maven构建集成)
Grunt-很简单,拥有一个出色的插件生态系统,并且社区规模庞大。如果您需要做某事,您可以打赌,那里有一个插件-可能甚至是由grunt的创造者编写的插件。对Grunt的主要批评是它是配置驱动的,这使得设置非常容易,而不是“节点方式”。还值得一提的是,Grunt任务不容易组合,因此对于复杂的JavaScript构建管道,Grunt可能不是理想的选择。
Gulp -Gulp是Grunt的快速增长的替代品。默认情况下,它是并发的,并使用流来避免临时写入文件系统,这可以大大加快构建速度。Gulp非常惯用,并且着重于代码>配置,尽管它为您提供了很多功能,但对于在JavaScript中没有核心能力的团队而言,这并不是理想的选择。
基于JavaScript的工具唯一的潜在障碍是,您需要在需要进行编译的任何计算机上安装Node,npm和grunt-cli / gulp。如果您无权访问CI机器或未使用基于工件的部署,那么这可能会很难。
将其集成到您的Maven项目中非常容易,并且您有很多选择。您可以使用Maven ant-run插件,可以运行ant exec任务并从Maven调用它,或者最好是仅使用maven exec任务。
下面的代码使用exec插件将其集成到Maven生命周期中,如果这对任何人都有用的话。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>grunt</executable>
</configuration>
</plugin>