目次

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.javacom/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.javaFoo.javaを参照してる場合、 <exclude>**/Foo.java</exclude>と設定しても Foo.javaはコンパイルの対象となる。