我们正在尝试在我们的Hudson CI中实现静态代码分析器,并且正如所提到的那样here但是,我遇到了关于将SONAR用于相同功能的问题。我们执行了以下步骤,但在Hudson Job运行时出错
hudson作业成功运行,直到将WAR文件部署到Tomcat6,但在启动声纳操作时失败。
我们在Hudson作业控制台中收到以下错误
java.io.IOException:无法运行程序“mvn.bat”(在目录“D:\ Users \ abcd.hudson \ jobs \ QA Build Local \ workspace \ view”中):CreateProcess error = 2,系统找不到指定的文件
mvn.bat -f "D:\Users\abcd\.hudson\jobs\QA Build Local\workspace\view\msaccess\MyApp\Code\appone\pom.xml" -e -B sonar:sonar -Dsonar.host.url=http://localhost:9000/ -Dsonar.language=java FATAL: command execution failed java.io.IOException: Cannot run program "mvn.bat" (in directory "D:\Users\abcd\.hudson\jobs\QA Build Local\workspace\view"): CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessBuilder.start(ProcessBuilder.java:459) at hudson.Proc$LocalProc.(Proc.java:192) at hudson.Proc$LocalProc.(Proc.java:164) at hudson.Launcher$LocalLauncher.launch(Launcher.java:639) at hudson.Launcher$ProcStarter.start(Launcher.java:274) at hudson.Launcher$ProcStarter.join(Launcher.java:281) at hudson.tasks.Maven.perform(Maven.java:263) at hudson.plugins.sonar.utils.SonarMaven.executeMaven(SonarMaven.java:138) at hudson.plugins.sonar.SonarPublisher.executeSonar(SonarPublisher.java:300) at hudson.plugins.sonar.SonarPublisher.perform(SonarPublisher.java:261) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36) at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:630) at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:608) at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:584) at hudson.model.Build$RunnerImpl.post2(Build.java:159) at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:553) at hudson.model.Run.run(Run.java:1390) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:145) Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.(ProcessImpl.java:81) at java.lang.ProcessImpl.start(ProcessImpl.java:30) at java.lang.ProcessBuilder.start(ProcessBuilder.java:452) ... 19 more Sonar analysis completed: FAILURE
我们从命令提示符手动运行maven-sonar命令,声纳分析成功完成,结果发布在声纳网站上。
注意:我们发现服务器中未设置M2_HOME环境变量。这会是一个错误吗?
修正更新:
我们在windows PATH环境变量中设置了maven_home \ bin文件夹,然后声纳能够识别mvn.bat并运行。
答案 0 :(得分:2)
Sonar正在作为一个单独的Maven程序运行。命令行显示在日志的顶部:
mvn.bat -f“D:\ Users \ abcd.hudson \ jobs \ QA Build Local \ workspace \ view \ msaccess \ MyApp \ Code \ appone \ pom.xml”-e -B sonar:sonar -Dsonar。 host.url = http:// localhost:9000 / -Dsonar.language = java
这是预期的,您附加了指定此Sonar配置的屏幕截图。
您的问题似乎不是作业配置,而是Jenkins无法找到“mvn.bat”命令....
java.io.IOException:无法运行程序“mvn.bat”(在目录“D:\ Users \ abcd.hudson \ jobs \ QA Build Local \ workspace \ view”中):CreateProcess error = 2,系统不能找到指定的文件
您需要调查如何配置Maven。
答案 1 :(得分:1)
我也一样。在我的情况下,我不得不改变maven目录的位置 - 当它在“c:\ Program Files(x86)\ wamp \ bin \ apache-maven-3.2.1 \”时它无法运行,但当我移动它时到“c:\ maven”(并更改了系统变量:“Path”,包括“C:\ maven \ bin”并由我创建“MAVEN_HOME = c:\ maven”)。 我必须重新启动计算机才能工作 - 通过输入“mvn -version”来检查Windows控制台(徽标窗口 - >运行“cmd”),你应该有一行“Maven home:C:\ maven”
答案 2 :(得分:0)
我在Windows中安装了Maven和正确配置的环境变量
FATAL: command execution failed
java.io.IOException: Cannot run program "mvn.bat" (in directory "C:\.jenkins\workspace\my_project"): CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:470)
at hudson.Proc$LocalProc.<init>(Proc.java:244)
at hudson.Proc$LocalProc.<init>(Proc.java:216)
at hudson.Launcher$LocalLauncher.launch(Launcher.java:803)
at hudson.Launcher$ProcStarter.start(Launcher.java:381)
at hudson.Launcher$ProcStarter.join(Launcher.java:388)
at hudson.tasks.Maven.perform(Maven.java:328)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:770)
at hudson.model.Build$BuildExecution.build(Build.java:199)
at hudson.model.Build$BuildExecution.doRun(Build.java:160)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:533)
at hudson.model.Run.execute(Run.java:1759)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:89)
at hudson.model.Executor.run(Executor.java:240)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:177)
at java.lang.ProcessImpl.start(ProcessImpl.java:28)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
我重新启动了Tomcat服务,因此它已经加载了最后配置的Maven的环境变量,使它们可供Jenkins使用。