从哈德森工作运行声纳时的maven错误

时间:2012-07-27 05:56:43

标签: maven hudson jenkins sonarqube

我们正在尝试在我们的Hudson CI中实现静态代码分析器,并且正如所提到的那样here但是,我遇到了关于将SONAR用于相同功能的问题。我们执行了以下步骤,但在Hudson Job运行时出错

  1. 安装声纳&运行
  2. 在Hudson中安装了Sonar插件,并使用声纳实例详细信息配置了hudson
  3. 已定义作业的已配置声纳详细信息
  4. hudson作业成功运行,直到将WAR文件部署到Tomcat6,但在启动声纳操作时失败。

    我们在Hudson作业控制台中收到以下错误

  5. 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并运行。

3 个答案:

答案 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)

安装

  • 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使用。