Java 当sonar:sonar插件运行时,Maven编译失败无法访问带有@Nonnull注释的枚举
我有一个相当大的maven项目,其中包含一系列子项目,我的Bambol实例使用“mvn clean deploy”运行连续构建。此外,还有一个单独的夜间“mvn清洁声纳:声纳”故障,错误如下 MediaServiceType是正在编译的子项目的主java部分中的枚举,它实现了来自另一个项目的接口。AbstractToolTest与MediaServiceType位于同一个包中,因此它不显示完整的包名。所讨论的行只是从接口类型转换为MediaSerivType 我假设我的pom有问题,但是查看使用-X的构建,java编译器实际上注销了类路径,其中包括一个包含MediaServiceType.class的文件夹。我也不确定如何处理“无法访问MediaServiceType”,而不是找不到类的错误 什么会导致这种问题Java 当sonar:sonar插件运行时,Maven编译失败无法访问带有@Nonnull注释的枚举,java,maven,build,sonarqube,cobertura,Java,Maven,Build,Sonarqube,Cobertura,我有一个相当大的maven项目,其中包含一系列子项目,我的Bambol实例使用“mvn clean deploy”运行连续构建。此外,还有一个单独的夜间“mvn清洁声纳:声纳”故障,错误如下 MediaServiceType是正在编译的子项目的主java部分中的枚举,它实现了来自另一个项目的接口。AbstractToolTest与MediaServiceType位于同一个包中,因此它不显示完整的包名。所讨论的行只是从接口类型转换为MediaSerivType 我假设我的pom有问题,但是查看使用
21-Mar-2013 10:45:46 [INFO] ------------------------------------------------------------------------
21-Mar-2013 10:45:46 [ERROR] BUILD ERROR
21-Mar-2013 10:45:46 [INFO] ------------------------------------------------------------------------
21-Mar-2013 10:45:46 [INFO] Can not execute Sonar
21-Mar-2013 10:45:46
21-Mar-2013 10:45:46 Embedded error: Unable to execute maven plugin
21-Mar-2013 10:45:46 Compilation failure
21-Mar-2013 10:45:46 /data/bamboo/xml-data/build-dir/PRO-PROTRUNKSONAR-JOB1/processors/processor-tool/src/test/java/company/prod/processor/AbstractToolTest.java:[20,52] error: cannot access MediaServiceType
21-Mar-2013 10:45:46
21-Mar-2013 10:45:46
21-Mar-2013 10:45:46 [INFO] ------------------------------------------------------------------------
21-Mar-2013 10:45:46 [DEBUG] Trace
21-Mar-2013 10:45:46 org.apache.maven.lifecycle.LifecycleExecutionException: Can not execute Sonar
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:284)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
21-Mar-2013 10:45:46 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
21-Mar-2013 10:45:46 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
21-Mar-2013 10:45:46 at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
21-Mar-2013 10:45:46 at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
21-Mar-2013 10:45:46 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
21-Mar-2013 10:45:46 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
21-Mar-2013 10:45:46 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
21-Mar-2013 10:45:46 at java.lang.reflect.Method.invoke(Method.java:601)
21-Mar-2013 10:45:46 at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
21-Mar-2013 10:45:46 at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
21-Mar-2013 10:45:46 at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
21-Mar-2013 10:45:46 at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
21-Mar-2013 10:45:46 Caused by: org.apache.maven.plugin.MojoExecutionException: Can not execute Sonar
21-Mar-2013 10:45:46 at org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:103)
21-Mar-2013 10:45:46 at org.codehaus.mojo.sonar.Bootstraper.start(Bootstraper.java:79)
21-Mar-2013 10:45:46 at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:88)
21-Mar-2013 10:45:46 at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
21-Mar-2013 10:45:46 ... 17 more
21-Mar-2013 10:45:46 Caused by: org.sonar.api.utils.SonarException: Unable to execute maven plugin
21-Mar-2013 10:45:46 at org.sonar.batch.AbstractMavenPluginExecutor.execute(AbstractMavenPluginExecutor.java:51)
21-Mar-2013 10:45:46 at org.sonar.batch.AbstractMavenPluginExecutor.execute(AbstractMavenPluginExecutor.java:38)
21-Mar-2013 10:45:46 at org.sonar.batch.phases.InitializersExecutor.executeMavenPlugin(InitializersExecutor.java:73)
21-Mar-2013 10:45:46 at org.sonar.batch.phases.InitializersExecutor.execute(InitializersExecutor.java:60)
21-Mar-2013 10:45:46 at org.sonar.batch.phases.Phases.execute(Phases.java:90)
21-Mar-2013 10:45:46 at org.sonar.batch.bootstrap.ProjectModule.doStart(ProjectModule.java:143)
21-Mar-2013 10:45:46 at org.sonar.batch.bootstrap.Module.start(Module.java:83)
21-Mar-2013 10:45:46 at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:111)
21-Mar-2013 10:45:46 at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:106)
21-Mar-2013 10:45:46 at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:106)
21-Mar-2013 10:45:46 at org.sonar.batch.bootstrap.BatchModule.doStart(BatchModule.java:101)
21-Mar-2013 10:45:46 at org.sonar.batch.bootstrap.Module.start(Module.java:83)
21-Mar-2013 10:45:46 at org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:102)
21-Mar-2013 10:45:46 at org.sonar.batch.bootstrap.Module.start(Module.java:83)
21-Mar-2013 10:45:46 at org.sonar.batch.Batch.execute(Batch.java:100)
21-Mar-2013 10:45:46 at org.sonar.maven.SonarMojo.executeBatch(SonarMojo.java:152)
21-Mar-2013 10:45:46 at org.sonar.maven.SonarMojo.execute(SonarMojo.java:142)
21-Mar-2013 10:45:46 at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
21-Mar-2013 10:45:46 at org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:98)
21-Mar-2013 10:45:46 ... 21 more
21-Mar-2013 10:45:46 Caused by: org.apache.maven.BuildFailureException: Compilation failure
21-Mar-2013 10:45:46 /data/bamboo/xml-data/build-dir/PRO-PROTRUNKSONAR-JOB1/processors/processor-tool/src/test/java/company/prod/processor/AbstractToolTest.java:[20,52] error: cannot access MediaServiceType
21-Mar-2013 10:45:46
21-Mar-2013 10:45:46
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:715)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:1205)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:1038)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:643)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
21-Mar-2013 10:45:46 at org.sonar.maven.Maven2PluginExecutor.concreteExecute(Maven2PluginExecutor.java:52)
21-Mar-2013 10:45:46 at org.sonar.batch.AbstractMavenPluginExecutor.execute(AbstractMavenPluginExecutor.java:49)
21-Mar-2013 10:45:46 ... 39 more
21-Mar-2013 10:45:46 Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
21-Mar-2013 10:45:46 /data/bamboo/xml-data/build-dir/PRO-PROTRUNKSONAR-JOB1/processors/processor-tool/src/test/java/company/prod/processor/AbstractToolTest.java:[20,52] error: cannot access MediaServiceType
21-Mar-2013 10:45:46
21-Mar-2013 10:45:46
21-Mar-2013 10:45:46 at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516)
21-Mar-2013 10:45:46 at org.apache.maven.plugin.TestCompilerMojo.execute(TestCompilerMojo.java:102)
21-Mar-2013 10:45:46 at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
21-Mar-2013 10:45:46 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
21-Mar-2013 10:45:46 ... 50 more
在打开详细日志记录后,我得到以下信息
21-Mar-2013 17:55:07 [loading RegularFileObject[/data/bamboo/xml-data/build-dir/PRO-PROTRUNKSONAR-JOB1/processors/processor-tool/target/generated-classes/cobertura/company/prod/processor/MediaServiceType.class]]
21-Mar-2013 17:55:07 /data/bamboo/xml-data/build-dir/PRO-PROTRUNKSONAR-JOB1/processors/processor-tool/src/test/java/company/prod/processor/AbstractToolTest.java:20: error: cannot access MediaServiceType
21-Mar-2013 17:55:07 return MediaServiceFactory.getMediaService((MediaServiceType) serviceType, ppt2TextPath, pdfwmkPath);
类文件的存在意味着缺少的不是MediaServiceType,而是其他内容
现在我发现,如果我删除了sonar构建运行的错误,那么这与MediaServiceType中使用的javax.annotations.Nonnull有关。运行mvn测试也很好,但是如果我运行sonar,测试编译就会失败,所以我很确定现在应该归咎于sonar,而不是我的pom文件
在测试和sonar构建的--debug日志上进行区分时,我可以看到sonar运行时,在编译类路径上放置了以下额外的JAR:
- cobertura-1.9.4.1.jar
- ant-1.7.0.jar
- ant-launcher-1.7.0.jar
<configuration>
<instrumentation>
<excludes>
<exclude>**/MediaServiceType.class</exclude>
<exclude>**/*Parameter.class</exclude>
</excludes>
</instrumentation>
</configuration>
**/MediaServiceType.class
**/*参数类
参数枚举似乎也有同样的问题,它们也是使用@Nonnull的枚举。是否检查了包含MediaServiceType和AbstractToolTest的依赖项是否在测试范围内<代码>测试。测试找不到该类,因此它可能不在范围内。请确保旧版本没有问题(您最近添加了该枚举吗?)
你可以试着暂时移开竹子的主文件夹
~/.m2/存储库
中的所有内容,看看是否有帮助。我担心的是,出于某种原因,您可能正在本地回购中使用捆绑包,而不是实际的模块。如果这确实有效,您必须找出原因;) 这一点很好,但请记住,如果没有指定范围,它默认为compile
,这也将使testsNeed能够真正看到pom!