2009-10-12 67 views
8

如何從Maven的目標目錄中刪除生成的構建工件? Maven生成一個jar或war文件到目標目錄。我想在maven將jar/war文件安裝到本地存儲庫(也就是說,在maven執行'install'目標之後)之後刪除該文件。刪除可能發生在安裝目標或手動執行的單獨目標中。如何從Maven的目標目錄中刪除生成的構建工件?

請注意,我想保留目標目錄的其他部分不變,例如target/site和target/surefire-reports。

+1

出於好奇,背後的原因是什麼? – 2009-10-12 07:17:31

+0

我以前見過這樣做,當有人想創建一個工件,如NSIS exe文件,但使用jar工件類型,因爲它有一套方便的生命週期綁定,或者如果他們不關心中間工件(例如從中生成exe文件的jar文件。) – 2009-10-13 01:37:57

+0

基本上我正在持續集成服務器中運行maven構建,並且我只對報告和安裝到本地回購的東西感興趣。其餘的文件只是浪費空間和我的jar文件碰巧相當大。 – 2009-10-13 06:23:33

回答

18

只要用乾淨的插件並運行安裝階段後執行:

<plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.2</version> 
    <executions> 
     <execution> 
     <id>auto-clean</id> 
     <phase>install</phase> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     <configuration> 
      <filesets> 
      <fileset> 
       <directory>${project.build.outputDirectory}</directory> 
       <includes> 
       <include>**/*.jar</include> 
       </includes> 
      </fileset> 
      </filesets> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+0

+1,但目錄元素應該是$ {project.build.outputDirectory}以允許重寫值 – 2009-10-12 07:18:12

+5

我需要從結果中只刪除特定的目錄。從版本2.3開始,插件會默認刪除整個目錄,除非您在標記中指定excludeDefaultDirectories屬性。 – Danny 2013-06-29 17:45:44

0

Maven中沒有任何內容可以做到這一點。您可以使用antrun插件在安裝後執行Ant腳本以刪除工件,或使用exec插件使用命令行刪除工件,或編寫自己的插件。

我建議在做任何這些事情時沒有什麼價值,如果有的話。 Maven旨在將中間和最終構件放置在target中,以使後續構建更高效。沒有任何可以做到這一點的原因已經是一個表明這沒有多大價值的指標。如果它對你有價值,你有幾個選擇。

+1

好吧,那是不正確的。見domi的答案。說了這些,我仍然想知道爲什麼會這樣做。 – 2009-10-12 08:54:54

0

我知道我是一個有點晚。但我想問題是,一個maven項目會自動歸檔這些工件。在我的情況下,我禁用了自動存檔,並使用後期構建操作手動存檔了工件。這樣,只有我感興趣的工件被存檔。我願意將生成的構件留在磁盤上,直到下一次構建運行。

相關問題