Javascript Web应用程序和Java服务器,全部在Maven中构建还是将Grunt用于Web应用程序?

虚空

我们正在使用AngularJS做一个Web应用程序,我们喜欢将Bower用于依赖关系管理,将Grunt用于构建,运行测试等的想法。(Yeoman

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

那么,您采用什么方法,为什么呢?

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

2)忘记Grunt Bower,使用Maven插件来构建,运行测试,管理Web应用程序的依赖项。如果是这样,那是什么?

3)使用Maven exec插件调用Grunt来构建前端Webapp。我将其更多地视为黑客而非解决方案。

4)其他。

易于与Jenkins集成的方法是一个加号。

提前致谢!

贝尔

在使用Java工具箱中的几乎所有资产管道工具一段时间后,我得出了一些结论:

基于Java的工具

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

  • WRO4J-支持非常棒,Maven和Eclipse集成非常棒,插件列表非常广泛,并且框架足够灵活,您可以使用一些弯头的润滑脂来编写所需的插件。如果您局限于基于Java的资产管道,那么这肯定是可行的方法。Wro4j的问题在于,相对于基于Node的工具而言,它运行缓慢(即使启动了Node进程)。
    要给出一些真实世界的数字,请在使用Rhino的2013 iMac(具有16G RAM)上使用Rhino时,将约25s的资产捆绑在一起并包含LESS,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的工具唯一的潜在障碍是,您必须在需要进行编译的任何计算机上安装Nodenpmgrunt-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>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过现有的Python应用程序公开具有REST API和HTML / JavaScript应用程序的Web服务器?

如何使用标准HTML,CSS,Javascript将Java代码集成到Web应用程序中?

SCORM和JavaScript:如何使Web应用程序与SCORM兼容?

在Tomcat Web应用程序中编辑javascript文件

使用 JavaScript 更改 MVC Web 应用程序中的属性

适用于 JavaScript 的 ArcGIS API、Web 应用程序中的 geoJSON 图层过滤器?

用于构建单页应用程序的JavaScript框架

ErrorHandling中的Javascript / Java应用程序

如何将数据从Java传递到JavaScript Web应用程序?

在Spring Boot 2.0 Web应用程序中,如何从静态Javascript文件中访问Java变量?

Google Closure中是否有适用于客户端-服务器应用程序的JavaScript代码覆盖工具?

如何查看用户是否已从 Javascript 应用程序注销身份服务器

为 Web (HTML/JavaScript) 导出 React Native 应用程序?

数据驱动的Web应用程序的哪个Javascript框架?

在TypeScript React Web应用程序内使用javascript库

单页JavaScript Web应用程序的体系结构?

Javascript-Web应用程序结构

远程JavaScript Web应用程序的无头测试

Azure Web 应用程序 - Javascript 未按预期工作

如何设置Web应用程序以与Parse Server(JavaScript)对话

最喜欢的地方 Javascript Web 应用程序

适用于大型复杂应用程序的Google Web Toolkit与Straight Javascript?

用于开发拖放式Web应用程序的最佳JavaScript库

在 Opentelemetry 中为 Javascript 应用程序添加服务名称

阻止浏览器显示来自azure应用程序服务的javascript和CSS文件

我可以在没有捆绑程序的情况下构建生产JavaScript Web应用程序吗?

是否可以在不是我们自己的Web应用程序中查看基于浏览器的javascript变量的值?

没有 html、css 和 javascript 的 flutter web 应用程序

在 Web 应用程序中最小化和打包多个 JavaScript 文件的最佳方法?