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
はコンパイルの対象となる。