2

多数のサブプロジェクトを含むかなり大きな Maven プロジェクトがあり、私の Bamboo インスタンスは「mvn clean deploy」で継続的なビルドを実行します。また、別の毎晩の「mvn clean sonar:sonar」があり、以下のエラーで失敗しています。

MediaServiceType は、コンパイルされるサブプロジェクトの主要な Java 部分の Enum であり、別のプロジェクトからのインターフェイスを実装します。AbstractToolTest は MediaServiceType と同じパッケージに含まれているため、完全なパッケージ名は表示されません。問題の行は、インターフェイス タイプから MediaSerivceType にキャストしているだけです。

私のpomに何か問題があると思いますが、-Xでビルドを見ると、Javaコンパイラは実際にクラスパスをログアウトし、MediaServiceType.classを持つフォルダーが含まれています。また、クラスが見つからないのではなく、「MediaServiceTypeにアクセスできません」というエラーをどうすればよいかわかりません。

何がこの種の問題を引き起こす可能性がありますか?

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 ではなく、別のものであることを意味します。

ソナービルドが実行されていることを削除すると、MediaServiceType で使用されている javax.annotations.Nonnull と関係があることがわかりました。また、mvn test の実行は正常に動作しますが、ソナーを実行するとテスト コンパイルが失敗するため、pom ファイルではなくソナーが原因であると確信しています。

テストとソナー ビルドの --debug ログを比較すると、ソナーが実行されているときに、次の追加の jar がコンパイル クラスパスに配置されていることがわかります。

  • cobertura-1.9.4.1.jar
  • ant-1.7.0.jar
  • ant-launcher-1.7.0.jar

また、メイン クラスにターゲット/クラスを使用する代わりに、生成されたクラス/cobertura を使用します。

現時点では、cobertura 構成から MediaServiceType を無視することで、この問題を回避しました。

            <configuration>
                <instrumentation>
                    <excludes>
                        <exclude>**/MediaServiceType.class</exclude>
                        <exclude>**/*Parameter.class</exclude>
                    </excludes>
                </instrumentation>
            </configuration>

パラメータ列挙型にも同じ問題があるようです。それらは @Nonnull を使用する列挙型でもあります。

4

2 に答える 2

2

MediaServiceType と AbstractToolTest を含む依存関係がテスト スコープ内にあることを確認しましたか。<scope>test</scope>. テストでクラスが見つからないため、スコープに含まれていない可能性があります。

于 2013-03-21T12:44:17.930 に答える
0

古いバージョンに問題がないことを確認してください (最近 Enum を追加しましたか?)。

Bamboo のホーム フォルダ内のすべてのものを一時的に移動してみて~/.m2/repository、それが役立つかどうかを確認できます。私の懸念は、何らかの理由で実際のモジュールではなく、ローカル リポジトリでバンドルを使用している可能性があることです。これが機能する場合は、その理由を突き止める必要があります ;)

于 2013-03-22T10:27:11.557 に答える