2016-04-05 26 views
5

私はいくつかのモジュールで構成されたプロジェクトを持っています。Maven SonarQubeマルチモジュール

私はこれらをSonarQubeで分析しようとしています。ソナー

MVNクリーンソナーを確認します。

<dependency> 
    <groupId>org.codehaus.sonar</groupId> 
    <artifactId>sonar-maven-plugin</artifactId> 
    <version>5.1</version> 
</dependency> 

は、その後、私は使用してMavenを実行している:

私は、各モジュール内の依存関係としてソナーMavenプラグインを用意しました

Mavenが正常に完了し、ソナーの解析が表示されますが、ソナーのUIを開くとモジュールがプロジェクトに表示されません。しかし

...私は、個々のモジュールディレクトリからMavenのコマンドを実行した場合

、それがプロジェクトに表示されます。

私は非常に単純な何かを見逃しています、助けていただきありがとうございます!

答えて

6

代わりの依存関係として、次のように、ルートpom.xml<build>セクションにsonar-maven-pluginを置く:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.sonarsource.scanner.maven</groupId> 
      <artifactId>sonar-maven-plugin</artifactId> 
      <version>3.0.1</version> 
     </plugin> 
    </plugins> 
</build> 

そして、それは、マルチモジュールプロジェクトなので、あなたはfirst perform an install from the root project and then run the sonar:sonar goal as a dedicated stepべき、次のように:

を次のように

mvn clean install 
mvn sonar:sonar 
はあなたの settings.xmlpom.xmlにsonarqubeサーバのURL、 specify a project property of sonar.host.urlを設定するには:

<properties> 
    <!-- Optional URL to server. Default value is http://localhost:9000 --> 
    <sonar.host.url>http://myserver:9000</sonar.host.url> 
</properties> 
+0

これはうまくいきました。個々のモジュールから実行したときに作成したSonarプロジェクトを削除する必要がありましたが、これに続いて、作成されたプロジェクトが表示されます。 v5.1はプラグインとして利用できないようですが、代わりに2.7.1を使用しなければなりませんでした。 Mavenの専門家ではないので、なぜこれが...? – timothyclifford

+1

Maven用SonarQubeスキャナーのバージョンがSonarQubeサーバーのバージョンに従っていません。 http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven#AnalyzingwithSonarQubeScannerforMaven-HowtoMavenPlugin –

+0

@timothycliffordを確認してください。Julien H.が述べたように、MavenプラグインはSonarQubeとは別のバージョン管理をしています。私は、SonarQubeサーバーv5.1と互換性のあるプラグインの最新バージョンのgroupId/artifactId /バージョンを持っているという答えを修正しました。 – heenenee

0

SonarQubeは、Mavenのようにマルチモジュールプロジェクトをサポートしています。つまり、複数のモジュールを含むMavenプロジェクトは、複数のプロジェクトではなく、複数のモジュール/コンポーネントを含むSonarQubeプロジェクトにマップされます。

(それはマルチモジュールMavenプロジェクトです)例えばSonarQubeコードを取る:parent project集合体のサブモジュールからすべての情報を、あなたはそのstructure(またはそのcodeページ)を確認した場合は、すべてのサブの一覧を見ることができますコンポーネント(例:SonarQube::Core

結論として、期待される動作が見られるということです。 Mavenプロジェクトのサブモジュールはプロジェクトとして解析されるものではなく、常に親プロジェクトを分析し、SonarQubeはモジュールをネイティブで処理します。

+0

ニコラスはなぜ@heeneneeレポートとして別々の呼び出しが必要なのか説明してください。これは直観に反するものであり、通常はどのように動作するのかと矛盾しているようです。たとえば、 "mvn clean"を実行する必要がなく、 "mvn install"を別途実行するだけで、 "mvn clean install"を実行できます。どうも。 – chrisinmtown

関連する問題