最近、SonarQubeサーバーを4.5.2から5.0.1に、次に5.1にアップグレードしました(以下の編集を参照)。
突然、マルチモジュールMavenプロジェクトの分析が次のエラーで失敗しました:
[INFO] [12:02:05.045] Sensor SCM Sensor...
[INFO] [12:02:05.169] SCM provider for this project is: svn
[INFO] [12:02:05.169] Retrieve SCM blame information...
[INFO] [12:02:05.185] 650 files to be analyzed
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] myproject ......................................... FAILURE [3:21.165s]
[INFO] module1 ........................................... SKIPPED
[INFO] module2 ........................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2:42.429s
[INFO] Finished at: Thu Feb 26 11:30:01 CET 2015
[INFO] Final Memory: 73M/2020M
[DEBUG] [11:30:01.789] Executing: svn blame --xml --non-interactive -x -w src/main/Java/MyClass.Java
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) on project myproject: Java.io.IOException: Cannot run progra
m "svn" (in directory "C:\somedirectory\module1"): CreateProcess error=2, The system cannot find the file specified
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: Java.io.IOException: Cannot run program "svn" (in directory "C:\somedirectory\module1"): CreateProcess error=2, The system cannot find the file specified
at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionHandling.Java:41)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBootstraper.Java:139)
at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.Java:138)
at org.Apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.Java:106)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:208)
... 19 more
どういうわけか、コマンドsvn
はディレクトリsrc/main/Java/MyClass.Java
にファイルC:\somedirectory\module1
を見つけられませんでしたが、そのファイルは確実にそこにあります。 SonarQubeがディレクトリsvn blame --xml --non-interactive -x -w src/main/Java/MyClass.Java
内のコマンドプロンプトC:\somedirectory\module1
で実行しようとしているコマンドをコピーして貼り付けた場合、コマンドは正常に機能しています。
SonarQubeサーバーの[システム情報]ページの[ライブラリパス]フィールドに表示されるように、svn
コマンドはPATH上で正しく機能しています。 SonarQubeサーバーは、mvn sonar:sonar
が実行されたのと同じサーバーでホストされています(Windows Server 2008 R2)。
svn
は、非難履歴を取得するためにSonarQubeによって起動されています。私が理解しているように、 SCMサポートに関してSonarQube 5.0でいくつかの変更が行われました (組み込みへの変更)。私の現在の回避策は、SonarQubeでSCMセンサーを無効にすることです(-Dsonar.scm.disabled=true
を使用するか、直接SonarQubeサーバーで、[設定]> [一般設定]> [SCM]の下にあります)。
SonarQube 5.0.1にアップグレードしたときにのみこの動作が発生したため、これは この質問 とは関係ありません。
使用されるJRE:1.7.0_51(64ビット)
EDIT:
SonarQube 5.1にアップグレードした後もエラーはここにありますが、メッセージは異なり、より明確です。 SVNクライアント(TortoiseSVN)を再インストールし、JenkinsとSonarQubeの両方を再起動しましたが、エラーが発生します:
SCMプロバイダーは「svn」に設定されましたが、このキーのSCMプロバイダーが見つかりませんでした。 SCMプロバイダーがインストールされていません
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) on project bombardier: SCM provider was set to "svn" but no SCM provider found for this key. No SCM provider installed -> [Help 1]
org.Apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) on project bombardier: SCM provider was set to "svn" but no SCM provider found for this key. No SCM provider installed
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: SCM provider was set to "svn" but no SCM provider found for this key. No SCM provider installed
at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionHandling.Java:41)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBootstraper.Java:139)
at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.Java:138)
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.IllegalArgumentException: SCM provider was set to "svn" but no SCM provider found for this key. No SCM provider installed
at org.sonar.batch.scm.ScmConfiguration.setProviderIfSupported(ScmConfiguration.Java:123)
at org.sonar.batch.scm.ScmConfiguration.considerOldScmUrl(ScmConfiguration.Java:133)
at org.sonar.batch.scm.ScmConfiguration.start(ScmConfiguration.Java:109)
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.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.Java:110)
at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(ReflectionLifecycleStrategy.Java:89)
at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.Java:84)
at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.Java:169)
at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.Java:132)
at org.picocontainer.behaviors.Stored.start(Stored.Java:110)
at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.Java:1015)
at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.Java:1008)
at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.Java:766)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.Java:91)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.Java:77)
at org.sonar.batch.scan.ScanTask.scan(ScanTask.Java:57)
at org.sonar.batch.scan.ScanTask.execute(ScanTask.Java:45)
at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.Java:135)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.Java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.Java:77)
at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.Java:158)
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.Java:95)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.Java:67)
at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.Java:48)
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.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.Java:87)
at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.Java:75)
at Java.security.AccessController.doPrivileged(Native Method)
at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.Java:69)
at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.Java:50)
at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.Java:102)
at org.sonar.runner.api.Runner.execute(Runner.Java:100)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBootstraper.Java:135)
... 22 more
SonarQube 5.1のインストール後に同じ問題が発生しました。アップデートセンターにアクセスしてください:
「SVN」を検索し、「インストール」をクリックします
次のようなものが表示されます:
次のプラグインをインストールするには、SonarQubeを再起動する必要があります:sonar-scm-svn-plugin-1.0.jar
SonarQubeを再起動します。
以下のコマンドを使用して、svn関連の問題を無効にします
-Dsonar.scm.disabled=True
これはsvnを無効にします
この問題は2つの方法で解決できます。
1。 sonar.properties -Dsonar.scm.disabled = Trueを設定すると、これはsonarrunner.batソナー分析でのみ有効です。
2。他のタイプの分析を使用して行う場合、adminのデフォルトのadminでログインすると、admin/admin(username/password)となります。 http:// yourDomin:port/settings/index(eghttp: // localhost:9000/settings/index )次に、カテゴリでscmを選択し、scmセンサーをtrueに設定して無効にします。
3。または、ソナーにsvnプラグインを追加できます http:// your_domain:port/updatecenter/available admin(admin/admin)としてログインした後、使用可能なものを検索しますプラグインとsvnを選択してインストールします。
この問題が発生しました。ソナー分析を実行しているビルドマシンにSVNがアクティブにインストールされていないことが原因です。ソナーボックスが何をインストールしたかは関係ありません。 SVNのせいにする必要があるのはビルドエージェントです。
CentOSを使っていました。魔法は
Sudo yum install svn
最後のトリックは、ビルドマシンがチェックアウトにインストールしたバージョンと同じバージョンのSVNを使用していることを確認することでした。ビルドマシンがネイティブで別のバージョンを使用していた場合は、次のチェックアウトの前にも、ワークスペース全体をクリーンアップする必要がある場合があります。
最後に、SonarにもSVN資格情報が必要であることを忘れないでください!
テストに使用しているのと同じように、SonarQubeプロセスに同じ環境変数があることを確認してください。
Redar LinuxマシンにSonarQube 5.0.1をインストールしたばかりで、まったく同じ問題があります。
Scm statsプラグインを無効にする代わりに、svnクライアント(svnkit.x86_64)をインストールし、SCMをアクティブにしてビルドを正常に実行しました。だから私はWindowsでは、svnクライアントをインストールしてPATHに置くべきだと思います。