私のジェンキンスビルドはこのメッセージで失敗し始めました:
[INFO] --- sonar-maven-plugin:2.7:sonar (default-cli) @ cividas-core-web ---
[INFO] artifact com.ontimize:ontimize-core: checking for updates from central
[INFO] artifact com.ontimize:ontimize-core: checking for updates from imatia-local
[INFO] artifact com.ontimize:ontimize-core: checking for updates from snapshots
[INFO] User cache: /var/lib/jenkins/.sonar/cache
[INFO] SonarQube version: null
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.773s
[INFO] Finished at: Thu Oct 22 19:49:04 CEST 2015
[INFO] Final Memory: 13M/193M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.7:sonar (default-cli) on project cividas-core-web: null: MojoExecutionException: NullPointerException -> [Help 1]
org.Apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.7:sonar (default-cli) on project cividas-core-web: null
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:216)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:153)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:145)
at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:84)
at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:59)
at org.Apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.Java:183)
at org.Apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.Java:161)
at org.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:317)
at org.Apache.maven.DefaultMaven.execute(DefaultMaven.Java:152)
at org.Apache.maven.cli.MavenCli.execute(MavenCli.Java:555)
at org.Apache.maven.cli.MavenCli.doMain(MavenCli.Java:214)
at org.Apache.maven.cli.MavenCli.main(MavenCli.Java:158)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.Java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.Java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.Java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:356)
Caused by: org.Apache.maven.plugin.MojoExecutionException
at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionHandling.Java:41)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstrapper.execute(RunnerBootstrapper.Java:107)
at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.Java:141)
at org.Apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.Java:106)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:208)
... 19 more
Caused by: Java.lang.NullPointerException
at org.Apache.maven.artifact.versioning.ComparableVersion.parseVersion(ComparableVersion.Java:354)
at org.Apache.maven.artifact.versioning.ComparableVersion.<init>(ComparableVersion.Java:345)
at org.Apache.maven.artifact.versioning.DefaultArtifactVersion.parseVersion(DefaultArtifactVersion.Java:110)
at org.Apache.maven.artifact.versioning.DefaultArtifactVersion.<init>(DefaultArtifactVersion.Java:46)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstrapper.isVersionPriorTo5Dot2(RunnerBootstrapper.Java:192)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstrapper.execute(RunnerBootstrapper.Java:84)
... 22 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.Apache.org/confluence/display/MAVEN/MojoExecutionException
Sonar analysis completed: FAILURE
これはどういうことですか?
「なぜ?」に興味がある人のために、私はもう少し掘り下げました、そして何が起こっているように思われるかはこれです:
RunnerBootstrapper バージョンが5.2以降かどうかを確認しようとします:
まず、serverVersionは 取得 ランチャーから EmbeddedRunnerで作成 、
which 読み取りを試みます リソースファイル sq-version.txt
バージョンを含みます。
このsq-version.txt
ファイルは org.codehaus.sonar:sonar-plugin-api にありますが、この依存関係は sonar-maven-plugin)には含まれていません(一時的であっても) 。ソナーに関して参照しているのは org.sonarsource.sonar-runner:sonar-runner-api だけです。
彼らは バージョンtxtファイルの場所と名前を変更しました のようですが、すべてのコードを更新したわけではありません。 sq-version.txt
とコンテンツ5.2
(改行なし)をプラグインクラスパスに手動で追加する(おそらくプラグインjarを更新する)か、sonar-plugin-apiへの依存関係を追加することで解決できるかもしれませんが、これらはハックです。
Sonar-maven-plugin2.6はsonar-runner2.4を使用します。これは、sonar-maven-plugin 2.7が使用する2.5とは大きく異なります(sonar-runnerのgroupIdには変更されたドメインorg.codehaus.sonar.runner
からorg.sonarsource.sonar-runner
)まで。したがって、移行がスムーズになり、さらにいくつかのバージョンがリリースされるまで、v2.6プラグインを使用することをお勧めします。
私のpom.xml
のプラグインセクションにこのコードを追加することにより、自動的に選択された最新(2.7)バージョンを古いバージョン(2.4)にダウングレードすることで解決しました
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.4</version>
</plugin>
SonarQubeサーバーのバージョンがmaven-sonar-plugin
に渡される方法は、現在sonar-runner 2.5
を使用しているため、他のものとともにv2.7で変更されました。
チケットを開いたSonarQubeインスタンス<4.3で使用すると、確かにバグがあります: https://jira.sonarsource.com/browse/MSONAR-131
SQ <4.5(現在の [〜#〜] lts [〜#〜] )はアクティブにサポートされなくなり、sonar-maven-plugin
がそれらと互換性がないという保証はないことに注意してください。 sonar-runner 2.5
によって公開された新しいインターフェースによる他の方法。
これらの場合、すでに提案されているように、mavenプラグインのバージョンを2.6にロックするのがおそらく最善です。
今日も同じ問題が発生しました。MavenプラグインとSonarプラグインには最新バージョンが自動的に使用されます。最初は問題を見つけるのは簡単ではありませんでした。
Elcodedocleが与えた答えは正しいですが、自動化された方法でMavenとソナーを使用する人のためにこれも解決策であることを追加したいと思います。
org.codehaus.mojo:sonar-maven-plugin:2.6:sonar
このようにして、古いバージョン2.6で実行され、動作することを確認できます。
2.7にはおそらくバグがあり、すぐに修正されることを願っています。これは私たちのエラーでした:
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven plugin:2.7:sonar (default-cli) on project (projectName): Unable to determine structure of project. Probably you use Maven Advanced Reactor Options with a broken tree of modules. "(projectName)" is Orphan -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.Apache.org/confluence/display/MAVEN/MojoExecutionException
編集:詳細については、この投稿をご覧ください: Jenkins Sonarプラグインが突然機能しなくなります
ここでは、プラグインの新しいバージョン2.7がJava 6プロジェクトと互換性がなくなったことを説明します。慣れていない場合は、Jenkinsで修正する方法についての説明もあります。 (私の説明は少し短かったです)
これはヒントです:
[INFO] SonarQube version: null
コードの後半で、Mavenはこのバージョン番号を解析しようとして失敗します。ソースコードは次のとおりです: https://github.com/mojohaus/sonar-maven-plugin/blob/master/src/main/Java/org/codehaus/mojo/sonar/bootstrap/RunnerBootstrapper.Java
SonarQubeランナーのソース から、これはプロパティインスタンスによってサポートされています。したがって、コードがサーバーにアクセスできなかったか、サーバーがこのデータを送り返していなかった可能性があります。わかりにくい。
私が見ることができるのは、コードが2.5で変更されたことです。それがおそらく2.4がまだ機能する理由です。バージョンを特定する方法については、こちらをご覧ください: Jenkins Sonarプラグインが突然機能しなくなる
ソナーのインストールを実行するのに適したプラグインのバージョンを見つけてください。
例えば。 mvn org.codehaus.mojo:sonar-maven-plugin:2.6:sonar
このプラグインバージョンは、最新のソナーリリースに対しては機能しませんが、4.1.2に対しては正常に機能します。