如果在构建作业中设置了MAVEN_OPTS,则Hudson SonarPlugin会失败

时间:2015-08-19 11:12:11

标签: java maven sonarqube hudson hudson-plugins

我使用哈德森SonarPlugin配置了post build sonarqube分析。我为SonarPlugin配置了MAVEN_OPTS是这样的: “-Xmx1024m -Dmaven.javadoc.failOnError = false”

如果我运行该作业,当hudson尝试执行post build操作时会出错:

  

[workspace] $ mvn -f /home/hudson-3.3.0/jobs/myJob/workspace/pom.xml -e -B sonar:sonar -Dsonar.jdbc.driver = oracle.jdbc.OracleDriver -Dsonar。 jdbc.url = jdbc:oracle:thin:@xxxxx:1521 / xxxx ******** ******** -Dsonar.host.url = http://xxxx:9000/sonar
  错误:无法找到或加载主类MAVEN_OPTS
  声纳分析完成:失败

我使用以下设置:
Tomcat 8.0.24
哈德森3.3.0
Sonar-Plugin 2.0.1
Maven 3.0.5 / 3.2.5
JDK 1.7.0_45

在使用Sonar-Plugin 1.8.1的较旧的hudson版本上,构建工作正常。

作为解决方法,我将MAVEN_OPTS路径变量配置为包含预期设置,但由于我必须使用不同的设置配置不同的作业,因此这只是一种解决方法。

有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

正如您在Bug 474406中所读到的,这是Hudson 3.3.x的错误。它与Sonar Plugin 2.0.1无关,它与Hudson 3.1.2一起运行良好。

在Hudson post build action中会发生这种情况:

解决方法是为作业添加build parameter,请参阅Bug 474406

Build parameter configuration

答案 1 :(得分:0)

虽然dur的解决方案工作正常,但它具有“立即构建”链接要求构建参数而不仅仅是构建的缺点。

为了让它在不需要参数化构建的情况下工作,我改变了hudson的$HOME/.mavenrc以包含以下行:

export MAVEN_OPTS="$(echo ${MAVEN_OPTS} | sed -e 's#^MAVEN_OPTS ##')"

这会从MAVEN_OPTS变量中删除前导“MAVEN_OPTS”。因此,如果hudson /插件设置为MAVEN_OPTS="MAVEN_OPTS -Xmx128m",则此mavenrc会将MAVEN_OPTS更改为仅包含-Xmx128m