2

我们试图在我们的 Hudson CI 中实现静态代码分析器,并按照这里提到的那样尝试,但是,我遇到了使用 SONAR 来实现相同的功能。我们执行了以下步骤,但在运行 Hudson Job 时出现错误

  1. 安装声纳并运行
  2. 在 Hudson 中安装 Sonar 插件并使用声纳实例详细信息配置 hudson
  3. 为已定义的作业配置声纳详细信息
  4. 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 并运行。

4

3 回答 3

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

这是预期的,您附加了指定此声纳配置的屏幕截图。

您的问题似乎不是作业配置,而是 Jenkins 无法找到“mvn.bat”命令....

java.io.IOException: Cannot run program "mvn.bat" (in directory "D:\Users\abcd.hudson\jobs\QA Build Local\workspace\view"): CreateProcess error=2, 系统找不到文件指定的

您需要调查如何配置 Maven。

于 2012-07-27T22:08:01.307 回答
1

我有同样的。就我而言,我必须更改 maven 目录的位置 - 当它位于“c:\Program Files (x86)\wamp\bin\apache-maven-3.2.1\”时它无法运行,但是当我移动它时到“c:\maven”(并更改了系统变量:“路径”,包括“C:\maven\bin”并由我创建“MAVEN_HOME = c:\maven”)。我必须重新启动计算机才能工作 - 通过键入“mvn -version”检查 Windows 控制台(徽标窗口 -> 运行“cmd”),你应该有行“Maven home:C:\maven”

于 2014-02-24T07:42:28.340 回答
0

安装

  • Jenkins 在 Tomcat 中作为战争安装
  • Tomcat 在 Windows 中作为服务安装

我已经在 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 使用。

于 2014-11-18T10:53:51.003 回答