2017-01-18 1 views
3

私はSONAR QUBE分析を実行するJenkinsジョブを作成しました。 SONARスキャンを一般的なビルドステップとして追加しました。 プロジェクトでSONARを気にする必要がないため、SONAR統合を有効にするためにプロジェクトを変更していません。 (つまり、POM.xmlは変更されず、プロパティファイルは追加されません)プロジェクトを変更せずにJenkinsのマルチモジュールプロジェクトでSonar Qubeをスキャンする

私のSONAR統合は、プロジェクトに必要な改造なしで機能します。

しかし、これはマルチモジュールプロジェクトです。このモジュールには自動生成コードが含まれているため、スキャンの1つを除外したいと考えています。 ここでMavenのは、私はジェンキンスでSONARスキャンをトリガするために使用しているというコマンドです:私はスキャンからProjectBのを除外したい

root 
     Project A 
     Project B 
     Project C 

sonar:sonar 
-Dsonar:host.url=http://url.com:9000/sonar 
-Dsonar.login=myusername 
-Dsonar.password=mypassword 

は、ここに私のプロジェクト構造です。

私は-Dsonar.exclusions=/ProjectBを試しましたが動作しませんでした。ここで

は、ログからの抜粋です。

[INFO] ------------- Scan Project B 
[INFO] Base dir: /workspace/jenkins/…/workspace/CI-JOB-NAME/projectB 
[INFO] Working dir: /workspace/jenkins/…/workspace/CI-JOB-NAME/projectB/target/sonar 
[INFO] Source paths: pom.xml, src/main/java 
[INFO] Binary dirs: target/classes 
[INFO] Source encoding: UTF-8, default locale: en_US 
[INFO] Index files 
[INFO] Excluded sources: 
[INFO] /projectB 
[INFO] 44 files indexed 
[INFO] 0 files ignored because of inclusion/exclusion patterns 

ログに示すように、除外ソースプロパティが設定されますが動作していない、それが0のファイルは無視と言うので、...

質問:スキャンからプロジェクトBディレクトリ内のすべてを除外しますか? (Jenkinsジョブのコマンドを使用し、プロジェクトファイルにプロパティファイルやその他の変更を追加しないことが望ましい)「除外ソースパス」は「ベースディレクトリ」パスまたはルート? 除外パスを絶対パスとして定義する必要がありますか?

答えて

1

documentationには専用のセクションがあります。あなたのケースに適しているようです オプション:

  • 使用ビルドプロファイルを(統合テストのためのような)いくつかのモジュールを除外する
  • (例えば-plなど)の使用Advanced Reactor Options。例えばmvn sonar:sonar -pl !module2

は、この最後の1を使用してたとえば、あなたが行うことができます:

sonar:sonar -pl "!projectB" 
-Dsonar:host.url=http://url.com:9000/sonar 
-Dsonar.login=myusername 
-Dsonar.password=mypassword 

は「除外ソースパス」「ベースディレクトリ」のパスまたはルートに相対的です??除外パスを絶対パスとして定義する必要がありますか?

documentation on exclusionsによると、 のパターンは、ベースディレクトリとの相対パスであり、絶対パスではありません。 マルチモジュールのmavenプロジェクトでは、 サブモジュールのファイルは、モジュールのベースディレクトリを基準にしたパスでインデックス付けされているため、このオプションはあなたのケースでは役に立ちません。 のようなパターンは、一致しません。projectBは使用されるパスの一部ではありません。モジュールにユニークなパッケージ名がある場合は、というsrc/main/java/someuniquepackageにあり、パターンsrc/main/java/someuniquepackage/**が動作するとします。

いずれの場合でも、上記の-plオプションを使用するか、Mavenのプロファイル機能を使用することをおすすめします。

+0

ありがとう、問題解決済み!私は両方の-plオプションと推奨パターンを使って除外パスを定義しようとしましたが、両方のオプションが機能しました! – user7435526

関連する問題