JavaScript的Web应用程序和Java服务器,build立所有在Maven或使用Grunt的Web应用程序?
我们正在用AngularJS做一个Web应用程序,我们喜欢使用Bower进行依赖pipe理和Grunt的构build,运行testing等( Yeoman )
这个服务器是用Maven使用Java完成的,所以当然我们想用一个简单的mvn install
一切(web应用程序+服务器)
那么你采取了什么方法,为什么?
1)将它们视为两种不同的应用程序,实际上它们是。 所以使用不同的build筑方法/工具是可以接受的
2)忘记Grunt Bower,使用Maven插件构build,运行testing,pipe理Web应用程序的依赖关系。 如果是这样的话,哪一个呢?
3)使用Maven exec插件调用Grunt来构build前端Web应用程序。 我认为这更像是一种解决scheme。
4)其他。
方法更容易与jenkins整合是一个加号。
提前致谢!
在使用Java工具包中的每个资产pipe道工具一段时间后,我得出了一些结论:
基于Java的工具
这里有一些工具,但最stream行的是JAWR和Wro4J。 这两个问题最大的问题是,他们大多是基于犀牛 (WRO4J现在有一些节点的支持),犀牛是比基于节点的工具慢狗。 您还必须考虑到JavaScript工具正在迅速成熟,因此您应该寻找可以快速移动的工具。
-
WRO4J – 支持非常好,Maven和Eclipse集成非常好,插件列表非常丰富,框架足够灵活,只要用一些手肘,你就可以为你所需要的插件编写一个插件。 如果您只限于基于Java的资产pipe道,这肯定是一条可行的路。 Wro4j的问题是它相对于基于节点的工具来说很慢(即使它启动了节点进程)。
为了给一些真实世界的数字编译和连接25个包含LESS的资产包,CSS CoffeeScript和JavaScript在使用Rhino和〜15s时使用Wro4j的节点支持约需要35s,而在16G RAM的2013 iMac中。 使用Grunt + Node在我的小MacBook Air上大概需要2秒钟。 -
JAWR – 集成和function列表相当不错,但文档不是很好,编写自己的插件可能有点棘手。 当我最初写这篇文章的时候,JAWR正处于一个4年的中断期,但是现在又从2014年1月开始回到正常的发展阶段。如果您select调查Java工具,那么这是值得调查的。
基于节点的工具(与Ant / Maven构build集成)
-
Grunt – 这很容易,有一个梦幻般的插件生态系统和社区是巨大的。 如果有什么你需要做的,你可以打赌有一个插件 – 甚至可能是由咕噜声的创造者写的。 Grunt的主要批评是configuration驱动,这使得设置变得简单,但不是“节点方式”。 还值得一提的是,Grunt任务不容易组合,所以对于一个复杂的JavaScript构buildpipe道来说,Grunt可能并不理想。
-
Gulp – Gulp是Grunt快速增长的替代品。 它的默认并发,并使用stream,以避免临时写入文件系统,这可以大大加快你的构build。 Gulp非常地道,强调代码>configuration,虽然这给了你很大的力量,但对于没有JavaScript核心能力的团队来说,这并不理想。
基于JavaScript的工具唯一潜在的问题就是你需要在任何需要编译的机器上安装Node , npm和grunt-cli / gulp 。 如果你没有访问你的CI机器,或者没有使用基于神器的部署,这可能是一个很难的出售。
把它集成到你的Maven项目中是非常容易的,你有很多select。 你可以使用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>
对于还在寻找更多关于这个主题信息的人来说,Yeoman的创造者之一有一篇很好的文章(在这个问题最初被问到几个月后写的),它扩展了原始的答案,
- 制作Maven Grunt
然后还有前端maven-plugin: https : //stackoverflow.com/a/19600777/320399它为您下载节点和NPM(本地到您的项目),通过该NPM(由该节点运行)下载Grunt,然后运行Grunt(通过该节点)。 它是自引导的,你不需要在机器上安装Node来构build项目。 只有一个命令; mvn安装。
你可能想要签出http://jhipster.github.io/ :它是一个Yeoman生成器,生成一个Maven,Grunt和Bower一起工作的应用程序。
这有点像你的第三个select,但一切都为你configuration,这并不容易。 它也为您生成基本的AngularJS和Java REST服务。
经过几个小时花在这个问题上,我可以这样说:
maven和grunt打不好,但是可以强制执行..
这里是通过Maven构build运行Grunt的插件描述
我希望这有帮助 :)