2010-05-26 41 views
12

我知道這可能是maven愛好者所不希望的,但是整個'target'目錄在我們的程序和部署過程中浪費了空間。我們有其他構建過程負責創建實際的部署,我目前手動刪除目標目錄後,每Maven構建,使其內容不會干擾我的文件搜索等...在編譯後刪除'target'目錄

有沒有辦法刪除這個目錄自動在Maven的構建/安裝結束?

謝謝,p。

回答

14

使用maven-清理插件這裏http://maven.apache.org/plugins/maven-clean-plugin/examples/delete_additional_files.html

<project> 


[...] 
    <build> 
<plugins> 
    <plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.4.1</version> 
    <executions> 
     <execution> 
     <id>auto-clean</id> 
     <phase>install</phase> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 
    </build> 
    [...] 
</project> 
+0

這將在構建開始時運行清洗,而不是結束。 – khmarbaise 2010-05-26 10:24:31

+1

@khmarbaise - 我改變了安裝階段,甚至在最後階段也能正常工作。但我打電話給mvn安裝。爲了使mvn包能夠工作,我需要使用maven-clean-plugin作爲包的階段,並在最後完成。 – JoseK 2010-05-26 10:57:23

+0

只需要小心,在部署或安裝階段之前不要刪除,項目將變得毫無用處。 – sal 2010-05-27 02:00:47

5

您應該簡單地在最後的清理目標添加到您的Maven目標。

mvn install clean 

與清理插件的問題是,如果你想在構建結束時運行的清潔這取決於你叫之初,其目標。例如,你調用了mvn包,你需要有一個不存在的後期包,或者如果你調用了mvn install,你必須安裝後期不存在的階段。

+0

@khmarbaise - 清潔插件與階段安裝/包即使在結束。你不需要安裝後/後期包。但它確實需要匹配所調用的原始階段。 – JoseK 2010-05-26 11:02:03

3

最簡單的方法是簡單地將「clean」添加到普通構建命令的末尾。例如。 mvn乾淨安裝乾淨。

2

如果你想要到j 烏斯刪除目標文件夾中的一些目錄,你必須創建一些結構是這樣的。
這個例如只刪除文件夾中的所有內容:

  • 目標/解壓
  • GEN-外部apklibs

excludeDefaultDirectories允許到n OT刪除完整的目標文件夾
我用它來清理lint分析前的目標文件夾。

 <plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <id>Deleting all unnecessary files before lint analysis</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <excludeDefaultDirectories>true</excludeDefaultDirectories> 
       <filesets> 
        <fileset> 
         <directory>target/unpack</directory> 
         <followSymlinks>false</followSymlinks> 
         <excludes> 
          <exclude>*</exclude> 
         </excludes> 
        </fileset> 
        <fileset> 
         <directory>gen-external-apklibs</directory> 
         <followSymlinks>false</followSymlinks> 
         <excludes> 
          <exclude>*</exclude> 
         </excludes> 
        </fileset> 
       </filesets> 
       <verbose>true</verbose> 
      </configuration> 
     </plugin>