java - Jenkins vs SonarQube : Run with specific JDK

标签 java maven jenkins

我有一个使用 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/

相关文章:

json - org.json.simple.JSONObject VS org.json.JSONObject , JSONException 无法解析为类型

maven - 如何在每次运行时在 Maven 中设置环境变量?

netbeans - 在 Jenkins 上设置 Netbeans 项目

java - Jenkins 连接到 LDAP

java - 通过 spring 初始化一个集合

java - 此 Java 正则表达式将返回单个结果还是多个

java - 合并两个排序数组的 ArrayIndexoutofbound 异常

java - 创建对象时我只得到最后一个索引

eclipse - 从本地存储库添加依赖项 - m2e

连接时 Jenkins Slave 连接超时