プロジェクトをマベナイズしようとしています。コード ベースが膨張し始めており、複数のモジュールに分割する必要があります。ただし、私たちはすでにある程度独自の展開プロセスを実施しており、Maven の方法を優先してディレクトリ構造を妥協することはできません。
単純化された構造は次のとおりです。
/workspace/basesrc/
|_ superpom.xml
|_ com/company/parentpkg/
|_ ModuleA/
|_ pom.xml
|_SubAModuleA/
|_ SubAModuleAClass.java
|_ pom.xml
|_SubAModuleB/
|_ SubAModuleBClass.java
|_ pom.xml
|_ ModuleB/
|_ ModuleBClass.java
|_ pom.xml
次のセットアップを使用してプロジェクトをビルドできました。
アプローチA
(superpom.xml):
<build>
<sourceDirectory>.</sourceDirectory>
</build>
これはサブモジュールによって継承され、実際には現在のディレクトリのみを構築します。
ただし、このスレッドに記載されているように、Sonar はパッケージ名の解決に問題があるようです: mvn sonar:sonar throws exception while doing Java AST scan。
アプローチ B : ここで説明されているように、ルート ソース ディレクトリを指定し、maven コンパイラ インクルードを使用します: http://maven.apache.org/guides/mini/guide-using-one-source-directory.html
(superpom.xml)
<build>
<sourceDirectory>/workspace/basesrc/</sourceDirectory>
</build>
(SubAModuleA pom.xml)
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<includes><include>com/company/parentpkg/ModuleA/SubAModuleA/**/*.java</include></includes>
</configuration>
</plugin>
</plugins>
</build>
繰り返しますが、これは maven ビルドの場合に機能します。ただし、サブモジュールディレクトリから実行しているにもかかわらず、Sonar には/workspace/basesrc/
フォルダー全体が含まれているようです。mvn sonar:sonar
だから私の質問は、
アプローチ A を使用する場合、Sonar Maven プラグインが Java ソース ファイルを検索するルート ディレクトリ プロパティを構成/オーバーライドする方法はありますか? ${project.build.sourceDirectory} maven プロパティとは異なる可能性がありますか?
アプローチ B を使用して、maven-compiler-plugin によってビルドされているもののみを分析するように Sonar を構成するにはどうすればよいですか?