我们试图在我们的 Hudson CI 中实现静态代码分析器,并按照这里提到的那样尝试,但是,我遇到了使用 SONAR 来实现相同的功能。我们执行了以下步骤,但在运行 Hudson Job 时出现错误
- 安装声纳并运行
- 在 Hudson 中安装 Sonar 插件并使用声纳实例详细信息配置 hudson
- 为已定义的作业配置声纳详细信息
hudson 作业成功运行,直到将 WAR 文件部署到 Tomcat6,但在启动声纳操作时失败。
我们在 Hudson 作业控制台中收到以下错误
java.io.IOException: Cannot run program "mvn.bat" (in directory "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 致命:命令执行失败 java.io.IOException: Cannot run program "mvn.bat" (in directory "D:\Users\abcd\.hudson\jobs\QA Build Local\workspace\view"): CreateProcess error=2, 系统找不到指定文件 在 java.lang.ProcessBuilder.start(ProcessBuilder.java:459) 在 hudson.Proc$LocalProc.(Proc.java:192) 在 hudson.Proc$LocalProc.(Proc.java:164) 在 hudson.Launcher$LocalLauncher.launch(Launcher.java:639) 在 hudson.Launcher$ProcStarter.start(Launcher.java:274) 在 hudson.Launcher$ProcStarter.join(Launcher.java:281) 在 hudson.tasks.Maven.perform(Maven.java:263) 在 hudson.plugins.sonar.utils.SonarMaven.executeMaven(SonarMaven.java:138) 在 hudson.plugins.sonar.SonarPublisher.executeSonar(SonarPublisher.java:300) 在 hudson.plugins.sonar.SonarPublisher.perform(SonarPublisher.java:261) 在 hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36) 在 hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:630) 在 hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:608) 在 hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:584) 在 hudson.model.Build$RunnerImpl.post2(Build.java:159) 在 hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:553) 在 hudson.model.Run.run(Run.java:1390) 在 hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 在 hudson.model.ResourceController.execute(ResourceController.java:88) 在 hudson.model.Executor.run(Executor.java:145) 原因:java.io.IOException: CreateProcess error=2, 系统找不到指定的文件 在 java.lang.ProcessImpl.create(本机方法) 在 java.lang.ProcessImpl.(ProcessImpl.java:81) 在 java.lang.ProcessImpl.start(ProcessImpl.java:30) 在 java.lang.ProcessBuilder.start(ProcessBuilder.java:452) ... 19 更多 声纳分析完成:失败
我们从命令提示符手动运行 maven-sonar 命令,声纳分析成功完成,结果发布在声纳网站上。
注意:我们观察到 M2_HOME 环境变量未在服务器中设置。这会是一个错误吗?
修复更新:
我们在 windows PATH 环境变量中设置 maven_home\bin 文件夹,然后声纳能够识别 mvn.bat 并运行。