2007年2月6日

Maven2: 刪除非預設條件下之目錄或檔案

將專案源碼打包到部署包裝檔 (jar/war) 檔後,當然要試試可否重新編譯及部署,在解開 jar/war 檔後第一眼看見的卻是依附於 jar/war 結構所額外產生的檔案或目錄,如下例:
ada@www ~/Eclipse/SnipSnap/target $ tree -L 2 -F --dirsfirst macro
macro
|-- META-INF/
|   |-- maven/
|   |-- services/
|   `-- MANIFEST.MF
|-- net/
|   `-- adahsu/
|-- src/
|   |-- main/
|   |-- site/
|   `-- test/
`-- pom.xml
從這可以發現其實 META-INF/ 及 net/ 兩個目錄其實是不必要的。橫豎留著礙眼,人工去刪除是個方法,但讓 maven2 自行處置會更好。

透過 maven-antrun-plugin 去刪除是個方法,不過 Maven2 官網提供一個更方便且專業的方法:Delete Additional Files Not Exposed to Maven,這樣只要執行 clean 這個 goal 就可以將所有不需要的目錄、檔案通通刪掉。

以下是使用範例:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-clean-plugin</artifactId>
      <configuration>
        <filesets>
          <fileset>
            <directory>META-INF</directory>
          </fileset>
          <fileset>
            <directory>net</directory>
          </fileset>
        </filesets>
      </configuration>
    </plugin>
  </plugins>
</build>