JavaScriptWeb应用程序和Java服务器,在Maven中构建全部还是使用Grunt作为web应用程序?

JavaScriptWeb应用程序和Java服务器,在Maven中构建全部还是使用Grunt作为web应用程序?,maven,build,angularjs,build-automation,gruntjs,Maven,Build,Angularjs,Build Automation,Gruntjs,我们正在使用AngularJS开发一个web应用程序,我们喜欢使用Bower进行依赖关系管理,使用Grunt进行构建、运行测试等 服务器是使用Maven用Java完成的,因此我们当然希望使用一个简单的mvn安装构建一切(web应用程序+服务器) 那么你采取了什么方法,为什么 1) 将它们视为两个不同的应用程序,实际上它们是。因此,使用不同的建筑方法/工具是可以接受的 2) 忘记Grunt Bower,使用Maven插件为web应用程序构建、运行测试和管理依赖关系。如果是这样的话,是哪一种 3)

我们正在使用AngularJS开发一个web应用程序,我们喜欢使用Bower进行依赖关系管理,使用Grunt进行构建、运行测试等

服务器是使用Maven用Java完成的,因此我们当然希望使用一个简单的
mvn安装
构建一切(web应用程序+服务器)

那么你采取了什么方法,为什么

1) 将它们视为两个不同的应用程序,实际上它们是。因此,使用不同的建筑方法/工具是可以接受的

2) 忘记Grunt Bower,使用Maven插件为web应用程序构建、运行测试和管理依赖关系。如果是这样的话,是哪一种

3) 使用Maven exec插件调用Grunt来构建前端webapp。我认为这更多的是一种黑客手段,而不是解决方案

4) 其他的

更容易与Jenkins集成的方法优先


提前谢谢

在花了几个小时研究这个问题之后,我可以这样说:

maven和grunt打得不好,但可以强制执行

这是


我希望这会有所帮助:)

在使用Java工具包中的每个资产管道工具一段时间后,我得出了一些结论:

基于Java的工具 有很多工具,但最流行的是JAWR和Wro4J。这两个工具最大的问题是它们大部分都是基于节点的(WRO4J现在有一些节点支持),而Rhino与基于节点的工具相比速度较慢。您还必须考虑JavaScript工具正在迅速成熟,因此您应该寻找能够快速移动的工具。
  • -支持非常好,Maven和Eclipse集成非常好插件列表非常广泛,框架非常灵活,只要稍加润色,您就可以根据需要编写插件。如果您仅限于基于Java的资产管道,那么这无疑是一条必经之路。Wro4j的问题是相对于基于节点的工具,它的速度很慢(即使它启动了节点进程)。
    为了给出一些真实世界的数字,编译和连接25个包含更少内容的资产包,CSS CoffeeScript和JavaScript在使用Rhino时需要约35秒,在2013 iMac上使用Wro4j的节点支持时需要约15秒,该iMac具有16G的RAM。在我小巧的MacBook Air上使用+节点大约需要2秒

  • -集成和功能列表非常好,但文档并不好,编写自己的插件可能有点棘手。当我最初写这篇文章的时候,JAWR正处于4年的中断期,但现在回到了2014年初的积极发展。如果您选择调查Java工具,这是值得调查的

基于节点的工具(与Ant/Maven构建集成)
  • -很简单,有一个奇妙的插件生态系统,社区规模庞大。如果你需要做一些事情,你可以打赌有一个插件,甚至可能是grunt的创建者编写的插件。Grunt的主要批评是它是配置驱动的,这使得设置非常简单,但不是“节点方式”。值得一提的是Grunt任务不容易组合,因此对于复杂的JavaScript构建管道,Grunt可能并不理想

  • -Gulp是Grunt快速发展的替代品。默认情况下,它是并发的,并使用流避免对文件系统的临时写入,这会大大加快构建速度。Gulp非常惯用,强调代码>配置,虽然这给了你很多力量,但对于那些不具备JavaScript核心能力的团队来说,它并不理想

基于JavaScript的工具的唯一潜在障碍是,您必须在任何需要进行编译的机器上进行编译。如果您无法访问您的CI机器,或者没有使用基于工件的部署,那么这可能是一个很难推销的产品。

将其集成到Maven项目中非常容易,而且您有很多选择。您可以使用Maven,您可以运行一个并从Maven调用它,或者最棒的是,您可以使用。
下面是使用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>

org.codehaus.mojo
execmaven插件
1.2.1
准备包装
执行官
咕哝

对于仍在寻找有关此主题的更多信息的任何人,Yeoman的一位创作者有一篇好文章(在最初提出此问题几个月后撰写),对原始答案进行了更详细的扩展:


还有前端maven插件: 它为您下载节点和NPM(本地到您的项目),通过该NPM(由该节点运行)下载Grunt,然后运行Grunt(通过该节点)。它是自引导的,您不需要在机器上安装节点来构建项目。
只要一个命令;mvn安装。

您可能需要签出:这是一个Yeoman生成器,它生成一个应用程序,Maven、Grunt和Bower一起工作


这有点像您的第三个选项,但一切都是为您配置的,这并不容易。它还为您生成了基本的AngularJS和Java REST服务。

感谢您的回答,这很有帮助,是的,但我将根据@Baer answer进行尝试。参考要点如下:谢谢您的详细回答。我想我会选择基于节点的工具选项。刚到格伦特,我喜欢迄今为止我所看到的一切,如果我能拥有两个世界中最好的一个,那就太好了。我不知道WRO4J和JAWR的存在。再次感谢。wro4j集成了less4j处理器,该处理器是less.js基于java的实现,其性能与node.js本机处理器相当。wro4j与node.js相比速度不快的原因主要是因为每次执行都需要磁盘IO操作。这只有在基于node.js的流程中才能得到改进