jenkins lib/tools.jar、sonarque和jdk 11

nom7f22z  于 2023-05-16  发布在  Jenkins
关注(0)|答案(1)|浏览(278)

我有一个jdk8的完整构建项目,在jenkins中可以完美地工作。这个项目依赖lib/tools.jar:
org.jboss.as:jboss-as-clustering-api:jar:7.5.0.Final-redhat-21:provided com.sun:tools:jar:1.6:system
这个系统依赖对于jdk 8来说没有问题,因为jdk在lib文件夹中有tools.jar。我的pom.xml提到了jboss-as-clustering-api.jar。它没有提到tools.jar。项目获取源代码并生成项目。它运行单元测试。它不运行sonarqube。
在我的jdk 8构建之后,我创建了一个特殊的jdk 11 sonarqube项目。这个项目运行jdk 11,因为sonarqube 9. 9只适用于jdk 11或更高版本。该项目使用完整的构建工作区,并且只运行sonarqube。它不获取源代码,不构建,不运行单元测试。它只使用maven 3.2.5调用sonarqube:

  • X-P完整构建org. sonarsource. scanner. maven:sonar-maven-plugin:3.4.0.905:sonar-e--settings ${build. maven. settings}-Dsonar. projectVersion =${TARGET_SHORT_VERSION}-${BUILD_NUMBER}
    项目失败:
    org. apache. maven. lifecycle. LifecycleExecutionException:无法对项目tmm执行目标:无法解析项目be. bpost. tmm:tmm:pom:27.30.0的依赖项-SNAPSHOT:无法找到工件com. sun:tools:jar:1.6 at specified path/usr/local/post/jdk-11.0.2/../lib/tools.jar
    怎么会这样?
    我尝试在sonarqube调用之前更改JAVA_HOME,以便它指向lib/tools的jdk 8:
    ... JAVA_HOME =/usr/local/post/jdk1.8.0_72
    [EnvInject]-成功注入变量。[TMM-MAIN-27.30-FB]$/usr/local/post/groovy-1.7.10/bin/groovy/usr/local/post/bdf-pr/jenkins-pr2/jenkins-home/platformScripts/scripts/groovy/Sonar/prepare-qb。groovy Artifactory集成已禁用[TMM-MAIN-27.30-FB]$/usr/local/post/jdk-11.0.2/bin/java-classpath/usr/local/post/apache-maven-3.2.5/boot/plexus-classworlds-2.5.2.jar-Dmaven。home =/usr/local/post/apache-maven-3.2.5-Dclassworlds。conf =/usr/local/post/apache-maven-3.2.5/bin/m2.conf-Xms256m-Xmx1024m-XX:MaxMetaspaceSize = 256m-Dsonar。ci. url =${JOB_URL}-Dsonar。scm。url = scm:svn:http://svn.netpost:10080/svn/${ACRONYM}/${SVN_MODULE}/branches/${BRANCH_NAME}-Djava。io. tmpdir =${TEMP_DIR}-Dmaven。马车http. ssl。insecure = true-Dmaven。马车http. ssl。allowall = true-Dmaven。马车http. ssl。忽略。有效性dates = true-Dhttp。proxyHost =${HTTP_PROXY_HOST}-Dhttp。proxyPort =${HTTP_PROXY_PORT}-Dhttp。proxyUser =-Dhttp。proxyPassword =*-Dhttps。proxyHost =${HTTP_PROXY_HOST}-Dhttps。proxyPort =${HTTP_PROXY_PORT}-Dhttps。proxyUser =-Dhttps。proxyPassword =*******-Dsonar。scm。url = scm:svn:${SVN_URL}-Dsonar。svn。用户名=******-Dsonar。svn。密码secured =****org. codehaus。丛classworlds.发射器启动器-f ${ACRONYM}/pom。xml-X-P完整构建org。声纳源扫描仪Maven:sonar-maven-plugin:3.4.0.905:sonar-e--settings ${build. maven设置}-Dsonar。projectVersion =${TARGET_SHORT_VERSION}-${BUILD_NUMBER}
    这不管用它仍然找不到lib/tools.jar。我需要做什么才能让sonarqube找到这个依赖关系?谷歌搜索给了我很多结果,但他们都谈到使用maven配置文件来分离构建和sonarqube运行。我已经把build和sonarqube分开了。我是否必须在我的pom文件中对tools.jar使用exclude和maven配置文件,以便pom在jdk 11上时排除tools.jar并将其包含在jdk 8中?我该怎么做?有人能给我点启发吗?
qzwqbdag

qzwqbdag1#

找到了!
我把它添加到pom.xml中。
jdk 8继续工作,因为它有${java.home}/../lib/tools. jar。构建使用jboss-as-ejb 3,它依赖于tools.jar,因此如果找不到${java.home}/../lib/tools.jar,则排除它:

<profile>
      <id>default-tools.jar</id>
      <activation>
        <file>
          <missing>${java.home}/../lib/tools.jar</missing>
        </file>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.jboss.as</groupId>
          <artifactId>jboss-as-ejb3</artifactId>
          <version>7.5.0.Final-redhat-21</version>
          <scope>provided</scope>
          <exclusions>
            <exclusion>
              <groupId>com.sun</groupId>
              <artifactId>tools</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
      </dependencies>
    </profile>

相关问题