我有一个使用 JDK 1.7 和 Sonarqube 6.0 构建和编译的项目,该项目仅在 JDK 1.8 上运行。 在 Jenkins 仪表板上,我设置了目标: :org.codehaus.mojo:sonar-maven-plugin:LATEST:sonar 并在 sonarqube 文件夹的wrapper.conf 上,我更改了 wrapper.java.command =C:\Program Files\Java\jdk1.8.0_91\bin\java,Jenkins JDK 设置为 1.7....但 Sonar 不适用于 JDK 1.8。 请帮忙给我建议。
最佳答案
我也遇到了类似的问题。
解决方案是在 Jenkins 的作业配置中设置 JDK8,并设置 JDK7 用于源代码、测试源和 Surefire 插件的编译。
类似这样的事情:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
<testSource>1.7</testSource>
<testTarget>1.7</testTarget>
<verbose>true</verbose>
<fork>true</fork>
<executable>C:\java\jdk1.7.0_25\bin\javac</executable>
<compilerVersion>1.7</compilerVersion>
</configuration>
<executions>
<execution>
<id>test-compile</id>
<phase>process-test-sources</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<fork>true</fork>
<executable>C:\java\jdk1.7.0_25\bin\javac</executable>
<source>1.5</source>
<target>1.5</target>
<compilerVersion>1.7</compilerVersion>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<jvm>C:\java\jdk1.7.0_25\bin\java</jvm>
<forkMode>once</forkMode>
</configuration>
</plugin>
如果它适合您,您可以在 settings.xml 中设置 JDK 的路径,并在 pom.xml 中使用该设置,以便每个环境/开发人员都可以使用自己的 JDK。
<profile>
<id>jdk7</id>
<properties>
<JDK_1_7_HOME>C:\java\jdk1.7.0_25</JDK_1_7_HOME>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
还有你的 pom.xml
...
<executable>${JDK_1_7_HOME}/bin/javac</executable>
...
关于java - Jenkins vs SonarQube : Run with specific JDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40522153/