首页 > 解决方案 > 如何在使用 sonar:sonar 构建 maven 项目时解决插件容器异常?

问题描述

在 sonarqube 7.4 的扩展文件夹中添加自定义插件 jar 后,我正在尝试使用干净的包 sonar:sonar 构建一个示例项目。但是每次它都会给出这个 PluginContainerException。错误在下面共享:

[ERROR] Failed to execute goal
org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar
(default-cli) on project testsonar: Execution default-cli of goal
org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar
failed: A required class was missing while executing
org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar:
org/sonar/java/model/PackageUtils [ERROR]
----------------------------------------------------- 
[ERROR] realm = plugin>org.codehaus.mojo:sonar-maven-plugin:3.5.0.1254 [ERROR]
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] =
file:/C:/Users/chakrabok/.m2/repository/org/sonarsource/scanner/maven/sonar-maven-plugin/3.5.0.1254/sonar-maven-plugin-3.5.0.1254.jar
[ERROR] urls[1] =
file:/C:/Users/chakrabok/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.4/plexus-sec-dispatcher-1.4.jar
[ERROR] urls[2] =
file:/C:/Users/chakrabok/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
[ERROR] urls[3] =
file:/C:/Users/chakrabok/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.22/plexus-utils-3.0.22.jar
[ERROR] urls[4] =
file:/C:/Users/chakrabok/.m2/repository/org/sonarsource/scanner/api/sonar-scanner-api/2.10.0.1189/sonar-scanner-api-2.10.0.1189.jar
[ERROR] urls[5] =
file:/C:/Users/chakrabok/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
[ERROR] Number of foreign imports: 1 [ERROR] import: Entry[import 
from realm ClassRealm[maven.api, parent: null]] [ERROR]  [ERROR]
-----------------------------------------------------:org.sonar.java.model.PackageUtils

请告诉我该怎么办?

标签: javamavenpluginssonarqubesonarqube-scan

解决方案


您可以使用以下任一解决方案来解决此问题:

  1. 在Sonarqube Web 控制台中停用“强制安全注释”规则。

  2. 在项目的 pom.xml 中添加如下依赖:

    <dependencies> ... <dependency> <groupId>org.sonarsource.java</groupId> <artifactId>java-squid</artifactId> <version>3.11</version> </dependency> </dependencies>

    确保在 pom.xml 中添加依赖后,您已经编译了项目(mvn clean install),然后将 jar 文件复制到<sonarqube_dir>/ extensions/plugins/目录中,最后重新启动 sonarqube 服务器。

PS org.sonar.java.model.PackageUtils 类由SecurityAnnotationMandatoryRule引入,需要在pom.xml 中添加其依赖。


推荐阅读