Maven Compiler Pluginのexcludes
Maven Compiler Pluginの <excludes>オプションを 使用すると、 指定したソースコードをコンパイル対象から除外することができる。
同様に<testExcludes>オプションで テストコードをコンパイル対象から除外することができる。
pom.xmlの例
<project> ... <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <excludes> <exclude>com/example/product/Foo.java</exclude> <exclude>com/example/product/bar/Bar.java</exclude> </excludes> <testExcludes> <testExclude>com/example/product/FooTest.java</testExclude> <testExclude>com/example/product/bar/BarTest.java</testExclude> </testExcludes> </configuration> </plugin> </plugins> </build> ... </project>
除外するファイルの指定方法
<exclude>にはソースディレクトリからの相対パスでファイルを指定する。
末尾に/があればディレクトリ名、無ければファイル名として扱われる。
ワイルドカードはディレクトリ名の**とファイル名の*が使用可能。
com/example/product/Foo.javaとcom/example/product/bar/Bar.javaがある場合の例。
| exlucdeの指定 | 結果 |
|---|---|
| com/example/product/Foo.java | Foo.javaを除外 |
| com/example/product/Foo* | Foo.javaを除外 |
| com/example/product/*oo.java | Foo.javaを除外 |
| com/example/product/*oo* | Foo.javaを除外 |
| com/example/product/Foo | × |
| com/example/product/ | Foo.javaとBar.javaを除外 |
| com/example/product/** | Foo.javaとBar.javaを除外 |
| com/example/product/* | Foo.javaを除外 |
| com/example/product | × |
| com/example/product/*a*/ | Bar.javaを除外 |
| com/**/bar/ | Bar.javaを除外 |
| com/ | com配下全てを除外 |
| com | × |
| /com | × |
| /example/ | × |
| Foo.java | × |
| **/Foo.java | Foo.javaを除外 |
| **/Foo* | Foo.javaを除外 |
| **Foo* | × |
| ** | 全て除外 |
落とし穴
<exlucdes>で除外していても、除外していないファイルから参照されている場合は除外されない。
上の例でBar.javaがFoo.javaを参照してる場合、
<exclude>**/Foo.java</exclude>と設定しても
Foo.javaはコンパイルの対象となる。