マルチモジュールでCheckStyleとかのルールを共有する
CheckStyleやFindBugsを使ってソースのチェックしていますが、標準のルールでは自分のスタイルとは多少違うところがあるので、カスタマイズしたルールをプロジェクトに配置して、maven-checkstyle-plugin等でルールを指定していました。
この方法だと、マルチモジュール構成の場合は各サブモジュールにもルールを配置しないとできませんし、ルールを一元管理もできません。プロパティを使えばできるような気がしますが...
そこで、Cgheckstyle Multimodule Configurationを参考に、ルールの共有化をやってみます。
ルール用のjarの作成
src/main/resourceに各ツール毎のルールやフィルターを配置します。check-rules.jarを作成し、ローカルやMavenのリポジトリにインストールします。pom.xmlはjarと同じです。
ルールの指定
次に、このルールを使用するプロジェクトの親のpom.xmlを設定します。
check-rules.jarの設定
/project/build/etensions/extensionに先ほど作ったcheck-rules.jarを設定します。extensionに設定するとビルド時のクラスパスに含まれます。詳細はPOMリファレンスを参照してください。
<build> : <extensions> <extension> <groupId>jp.ddo.bacons</groupId> <artifactId>check-rules</artifactId> <version>0.1</version> </extension> </extensions> </build>
maven-checkstyle-pluginの設定
/project/reporting/pluginsにmaven-checkstyle-pluginを追加します。confgiLocationには、クラスパスにあるcheck-rules.jarのルールを指定します。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>2.3</version> <configuration> <configLocation>default/checkstyle/checkstyle.xml</configLocation> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin>
findbugsやPMDも同様です。