是否可以从 maven 编译 grunt 项目?
我试图从maven内部执行繁重的任务,而无需安装Node.js或任何东西。这是因为我不想让我的工件被 Jenkins 打包,我无法在该计算机上安装 Node.js。
我知道使用npm和一些命令可以很容易地让它工作,但我也认为它应该很容易与maven集成,问题是我不知道从哪里开始,因为我是npm的新手。
我试图从maven内部执行繁重的任务,而无需安装Node.js或任何东西。这是因为我不想让我的工件被 Jenkins 打包,我无法在该计算机上安装 Node.js。
我知道使用npm和一些命令可以很容易地让它工作,但我也认为它应该很容易与maven集成,问题是我不知道从哪里开始,因为我是npm的新手。
是的,使用前端-maven-plugin,你可以通过Maven编译Grunt项目(通过NodeJS邮件列表找到)。
如文档所述,该插件具有以下功能:
- 通过将前端和后端构建之间的交互量减少到最低限度,让您尽可能地保持前端和后端构建的分离;仅使用 1 个插件。
- 允许您在构建过程中使用 Node.js 及其库,而无需为构建系统全局安装 Node/NPM
- 让您确保正在运行的 Node 和 NPM 的版本在每个构建环境中都是相同的
我已经浏览了代码,它相当简单。谢天谢地,终于有人把这个放在一起;这是一个优雅的解决方案。该存储库包含一个示例,该示例使用常规来调用 jshint 分析。Gruntfile.js
2014-09-19更新:这不再是最准确的答案 - 请查看下面的其他一些答案。在我回答这个问题的时候,这是准确的,但从那时起,这一领域似乎取得了很大进展。
恐怕你运气不好。Grunt 是使用 node 构建的,需要使用 npm 进行安装。如果您不想使用 npm,则可以从另一台计算机复制 Grunt 的现有安装,但仍会在生成服务器上使用可执行文件及其所有依赖项。grunt
除此之外,许多Grunt任务都是作为Node.js模块实现的,您还必须安装它们。同样,您可能能够从另一台服务器复制它们,在那里您已经完成了Node.js / Grunt安装,但是在某一时刻,您必须这样做。
对于从 Maven 运行 Grunt,最好的选择是使用 Maven exec 插件,然后从那里执行 grunt 可执行文件。
作为替代方案,有几个Maven插件允许您以基于Java的方式执行类似于Grunt的事情。它们需要与 Grunt 不兼容的其他配置,因此 YMMV。我过去使用过的一个是 http://code.google.com/p/wro4j/,它还附带一个Maven插件:http://code.google.com/p/wro4j/wiki/MavenPlugin
您无法在构建服务器上安装 Node.js 的任何特殊原因?