TestInputFileBuilder'缺少'同时更新sonar-java-plugin

时间:2017-05-16 17:38:25

标签: java maven sonarqube

所以,我有一个声纳java自定义规则插件,运行在4.2.1.6971版本和SonarQube平台5.6.3。

最近我尝试将java插件依赖项更新到最新的4.9.0.9858版本,并在尝试清理安装后#39;项目我在所有单元测试中得到相同的错误:

[INFO] Running checks.security.SystemExitCallsCheckTest
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 
0.001 s <<< FAILURE! - in checks.security.SystemExitCallsCheckTest
[ERROR] detected(checks.security.SystemExitCallsCheckTest)  Time elapsed: 0s << ERROR!
java.lang.NoClassDefFoundError: 
org/sonar/api/batch/fs/internal/TestInputFileBuilder
at checks.security.SystemExitCallsCheckTest.detected(SystemExitCallsCheckTest.java:19)

看起来像是班级 找不到 TestInputFileBuilder ,但我在Eclipse上没有依赖错误。

这是我的pom.xml的一部分:

    <properties>
    <sonar.version>6.0</sonar.version> 
    <java.plugin.version>4.9.0.9858</java.plugin.version>
    <sslr.version>1.21</sslr.version>
    <gson.version>2.6.2</gson.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.sonarsource.sonarqube</groupId>
        <artifactId>sonar-plugin-api</artifactId>
        <version>${sonar.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.sonarsource.java</groupId>
        <artifactId>sonar-java-plugin</artifactId>
        <type>sonar-plugin</type>
        <version>${java.plugin.version}</version>
        <scope>provided</scope>
    </dependency>

如何应对此错误?当我尝试单独运行任何单元测试时,我也会遇到同样的错误。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您需要将声纳版本升级到API 6.3。这是因为SonarJava插件内部依赖于此API进行测试,因为这个文件:TestInputFileBuilder:https://github.com/SonarSource/sonarqube/blob/master/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/TestInputFileBuilder.java,它是在6.3中引入的。

请注意,虽然您需要依赖此API进行插件测试,但只要您不使用5.6(LTS)中没有的API,就可以在LTS上完美地运行自定义规则。