在Jenkins中使用maven exec插件运行nodejs

我的jenkins盒子上安装了node,npm和grunt。 我能够在Jenkins的预先步骤中使用execute shell成功运行下面的命令。

PATH=$PATH:/sev/installed/node-v0.10.31/bin rm -rf node_modules rm -rf bower_components npm install --python=/sev/installed/Python-2.7.3/bin/python npm update --python=/sev/installed/Python-2.7.3/bin/python bower install bower update 

下一步,当我调用mvn clean包时,Build会失败并显示错误

 ./usr/bin/env: node: No such file or directory [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8.973s [INFO] Finished at: Tue Aug 26 23:51:16 GMT+00:00 2014 [INFO] Final Memory: 17M/438M [INFO] ------------------------------------------------------------------------ Waiting for Jenkins to finish collecting data [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (default) on project TestUI: Command execution failed. Process exited with an error: 127 (Exit value: 127) -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. 

我在这个Linux机器上没有root权限。 Maven exec插件,正在失败的构build。 在pom下面的插件定义。

  <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <goals> <goal>exec</goal> </goals> <phase>prepare-package</phase> </execution> </executions> <configuration> <executable>${project.basedir}/node_modules/grunt-cli/bin/grunt</executable> <workingDirectory>${project.basedir}</workingDirectory> </configuration> </plugin 

我不能做一个符号连接点节点安装到/ usr / bin。 任何解决这个问题的工作?

我遇到了很多试图使用exec-maven-plugin 。 根据我的经验, frontend-maven-plugin是这种构建/部署过程的最佳插件。 它会在本地下载/安装Node和NPM,运行NPM安装,Grunt,Gulp和/或Karma。 由于我的构建服务器在构建期间到达网络外部有非常严格的限制,因此我提交了服务器版本的节点以及任何使用grunt的节点包。

 <plugin> <groupId>com.github.eirslett</groupId> <artifactId>frontend-maven-plugin</artifactId> <version>...</version> <!-- optional --> <configuration> <workingDirectory>src/main/frontend</workingDirectory> </configuration> <execution> <id>grunt build</id> <goals> <goal>grunt</goal> </goals> <!-- optional: the default phase is "generate-resources" --> <phase>generate-resources</phase> <configuration> <!-- optional: if not specified, it will run Grunt's default task (and you can remove this whole <configuration> section.) --> <arguments>build</arguments> </configuration> </execution> </plugin> 

需要注意的一件事就是下载正在运行的系统的节点,所以如果你的构建服务器有不同的操作系统,那么你需要确保你已经签入版本控制的版本,您的本地版本(对于我OSX)将不得不在本地维护您的项目。 讨论在这个StackOverflow线程上使用Grunt的frontend-maven-plugin :“ 是否有可能从maven编译grunt项目?