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的插件描述

我希望这有帮助 :)