首页 文章

Javascript Web应用程序和Java服务器,在Maven中构建所有内容或使用Grunt进行Web应用程序?

提问于
浏览
96

我们正在使用AngularJS进行Web应用程序,我们喜欢使用Bower进行依赖关系管理和Grunt来构建,运行测试等等 . (Yeoman

服务器是用Java完成的,所以当然我们想用一个简单的 mvn install 构建一切(Web应用服务器)

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

1)将它们视为两种不同的应用,实际上它们是 . 因此可以使用不同的构建方法/工具 .

2)忘掉Grunt Bower,使用Maven插件构建,运行测试,管理Web应用程序的依赖关系 . 如果是这样的话,那是哪一个?

3)使用Maven exec插件调用Grunt构建前端webapp . 我认为这更像是一个黑客而不是一个解决方案 .

4)其他 .

更容易与Jenkins集成的方法是一个加分 .

提前致谢!

5 回答

  • 13

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

    基于Java的工具

    有一些工具,但最受欢迎的是JAWR和Wro4J . 这两个问题的最大问题在于它们主要基于Rhino(WRO4J现在有一些Node支持),而Rhino比基于Node的工具慢得多 . 您还必须考虑JavaScript工具正在快速成熟,因此您应该寻找可以快速移动的工具 .

    • WRO4J - 支持很棒,Maven和Eclipse集成非常棒插件列表非常广泛且框架足够灵活,只需要一些手肘油脂就可以为任何你需要的东西编写一个插件 . 如果您只局限于基于Java的资产管道,那么这肯定是要走的路 . Wro4j的问题在于它相对于基于Node的工具来说很慢(即使它启动了Node进程) .
      为了给包含LESS的25个资产包编译和连接一些真实世界的数字,CSS CoffeeScript和JavaScript在使用Rhino时需要大约35秒,在使用16G RAM的2013 iMac上使用Wro4j的Node支持需要大约15秒 . 在我微不足道的MacBook Air上使用Grunt节点需要大约2秒 .

    • JAWR - 集成和功能列表非常好,但文档并不好,编写自己的插件可能有点棘手 . 当我最初撰写这篇文章时,JAWR正处于4年的中断状态,但截至2014年1月正在积极开发中 . 如果您选择调查Java Tools,这值得研究 .

    基于节点的工具(与Ant / Maven构建集成)

    • Grunt - 它还值得一提的是,Grunt任务不易组合,因此对于复杂的JavaScript构建管道而言,Grunt可能并不理想 .

    • Gulp - Gulp是Grunt快速增长的替代品 . 默认情况下它是并发的,并使用流来避免临时写入文件系统,这可以大大加快您的构建速度 . Gulp是非常惯用的,并且强调代码>配置,虽然这给了你很大的力量,但它在JavaScript中具有核心竞争力 .

    基于JavaScript的工具唯一可能的挂起是你必须在任何需要编译的机器上拥有Nodenpmgrunt-cli / gulp . 如果您无法访问CI计算机或未使用基于工件的部署,则可能很难 .

    将它集成到您的Maven项目中非常简单,您有很多选择 . 您可以使用Maven ant-run plugin,您可以运行ant exec task并从Maven中调用它,或者最重要的是您可以使用maven exec task .
    下面是使用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>
    
  • 24

    对于仍然在寻找关于这个主题的更多信息的人来说,Yeoman的创作者之一有一篇好文章(在最初提出这个问题几个月之后写的),它更详细地扩展了原始答案:

  • 73

    然后还有frontend-maven-plugin:https://stackoverflow.com/a/19600777/320399它为您下载Node和NPM(本地到您的项目),通过该NPM下载Grunt(由该节点运行)然后运行Grunt(通过该节点) . 它需要在机器上安装Node来构建项目 . 只有一个命令; mvn安装 .

  • 13

    你可能想要签出http://jhipster.github.io/:它是一个Yeoman生成器,它生成一个Maven,Grunt和Bower一起工作的应用程序 .

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

  • 4

    花了几个小时来解决这个问题,我可以这样说:

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

    这是a plugin description for running Grunt via Maven build

    我希望这有帮助 :)

相关问题