2014年4月12日土曜日

maven clean時にtarget配下以外のファイルも削除する方法

■環境
CentOS release 6.3 (Final)
Apache Maven 3.1.1
java version "1.6.0_24"

■プロジェクト作成
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.kakakikikeke.test -DartifactId=sampleProject
    ※バージョン情報やスナップショットファイル名は適当に設定します
    ※groupIdやartifactIdは適宜変更して問題ございません

■pom.xml編集
1. 他のファイルを削除する定義を追加
dependencies直後に以下を記載します
maven-clean-pluginを使って不要なファイルを削除します
maven-clean-pluginはデフォルトで使用できるプラグインですが、再定義することでtarget以外のファイルもclean時に削除することができます
以下の例ではtarget以外の2種類のファイルを削除しています
  • conf/config.properties
  • test_data/*.tsv
<build>
  <plugins>
    <plugin>
      <artifactId>maven-clean-plugin</artifactId>
      <configuration>
        <excludeDefaultDirectories>true</excludeDefaultDirectories>
        <filesets>
          <fileset>
            <directory>conf</directory>
            <includes>
              <include>config.properties</include>
            </includes>
          </fileset>
          <fileset>
            <directory>test_data</directory>
            <includes>
              <include>*.tsv</include>
            </includes>
          </fileset>
        </filesets>
      </configuration>
    </plugin>
  </plugins>
</build>

2. テストしてみる
mvn clean

を実行してtargetディレクトリと上記で指定したファイルが削除されていることを確認してください
ディレクトリやファイルが存在しない場合はERRORとならずビルドが成功します

■Tips
更に他のディレクトリ配下のファイルを削除したい場合はfilesetタブを増やしていけばOKです

maven-clean-pluginでpom.xml自身も削除することができてしまうので定義する際は十分に注意してください
間違って削除する定義がある状態でmvn cleanすると大変なことなるかもしれません。。

0 件のコメント:

コメントを投稿