Maven 的节点版本管理策略

Node version managing strategy with Maven

我正在使用 NVM 来管理我的 NodeJS 版本。我正在尝试将它与 Jenkins 工作中的 Maven 集成。以下脚本在 Maven 运行之前执行。我认为没有办法将 NodeJS 安装目录作为选项参数传递给 Maven。我相信 nvm use 将 NodeJS 安装目录导出到 PATH,但我可能错了。

#!/bin/sh -e
source /mounts/dev/jenkins/.nvm/nvm.sh
nvm alias default node
nvm use --delete-prefix v4.2.0 --silent

Maven 需要 NodeJS 的原因是 yeoman-maven-plugin,它默认使用全局安装的 NodeJS 版本。我知道有一个适用于 Jenkins 的 NodeJS 插件可以使用,但我认为使用它不是最佳选择。

我认为可以将 NVM 集成到 Jenkins Maven 作业中,但我可能采用了错误的方式。有人对不同的 NVM 方法有任何想法吗?

我们没有尝试将 NVM 与 Maven 集成,而是决定放弃 yeoman-maven-plugin,转而使用 frontend-maven-pluginfrontend-maven-plugin 允许本地 Node 和 NPM 安装,以及其他构建工具,如 Gulp 和 Grunt。唯一需要进行的更改是 pom.xml。另外,不再需要在 Jenkins 中编写额外的脚本。

安装Node和NPM的使用示例

<plugin>
  ...
  <execution>
      <!-- optional: you don't really need execution ids,
      but it looks nice in your build log. -->
      <id>install node and npm</id>
      <goals>
          <goal>install-node-and-npm</goal>
      </goals>
      <!-- optional: default phase is "generate-resources" -->
      <phase>generate-resources</phase>
  </execution>
  <configuration>
      <nodeVersion>v0.10.18</nodeVersion>
      <npmVersion>1.3.8</npmVersion>
      <!-- optional: where to download node and npm from. Defaults to https://nodejs.org/dist/ -->
      <downloadRoot>http://myproxy.example.org/nodejs/dist/</downloadRoot>
      <!-- optional: where to install node and npm. Defaults to the working directory -->
      <installDirectory>target</installDirectory>
   </configuration>
</plugin>

可以找到有关插件的更多信息here