2011-04-18 1017 views
34

在我的項目中我有一個名爲war的文件夾。它最初是空的,它受版本控制。該文件夾在其package階段由Maven填充,Eclipse的WST插件從該文件夾部署Web應用程序。Maven - 如何在清理階段刪除文件夾的內容?

我想要的是在clean階段刪除war文件夾的內容,但不刪除文件夾本身。我怎麼做?到目前爲止,我知道如何刪除整個文件夾war

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.4.1</version> 
    <configuration> 
     <followSymLinks>false</followSymLinks> 
     <filesets> 
      <fileset> 
       <directory>${basedir}/war</directory> 
      </fileset> 
     </filesets> 
    </configuration> 
</plugin> 

如何刪除war文件夾的內容,只而不是文件夾本身?我知道通過添加一些現有的排除項目,該文件夾不會被刪除。但如何一般刪除文件夾的內容?

回答

57

添加此includes部分,將文件集定義

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>2.4.1</version> 
      <configuration> 
       <filesets> 
        <fileset> 
         <directory>war</directory> 
         <includes> 
          <include>**/*</include> 
         </includes> 
         <followSymlinks>false</followSymlinks> 
        </fileset> 
       </filesets> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+1

對我來說,只有在添加了部分後才起作用,如下所述:http://stackoverflow.com/questions/18637626/remove-or-delete-resource-files-from-target-directory-using-pom-file – 2015-04-19 19:09:08

2

您將不得不使用maven ant插件&添加任務僅刪除文件夾內容。然而,爲什麼你需要版本控制中的戰爭文件?每次構建代碼庫時都會顯示有一些修改/新文件(生成的類)需要簽入。如果使用標準的Maven約定,則目標文件夾將用於所有輸出。

+0

我已經配置Eclipse中使用'war'文件夾(在部署組件),我想每一個開發商誰簽出的項目有該文件夾,所以Eclipse配置是有效的。這些內容當然會添加到svn:ignore中,並由Maven填充。 – janhink 2011-04-18 12:03:29

6

在我來說,我需要刪除「bin」目錄和它的所有子目錄中的內容。我這樣做是在我父母的pom.xml:

<fileset> 
    <directory>${basedir}</directory> 
     <includes> 
     <include>**/bin/**</include> 
     </includes> 
     <followSymlinks>false</followSymlinks> 
</fileset> 

這才發現我的項目中的任何bin目錄,並刪除了bin文件夾中的任意內容。

+0

這個去哪了? – Snickers3192 2016-11-05 23:54:50

+1

已經有一段時間了,但看着我的正上方的帖子,它進入了maven-clean-plugin的配置。 – 2016-12-04 16:09:00

1

如果婉刪除多個目錄遞歸:

<plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>3.0.0</version> 
      <executions> 
       <execution> 
        <id>auto-clean</id> 
        <phase>clean</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
        <configuration> 
         <filesets> 
          <fileset> 
           <directory>${basedir}</directory> 
           <includes>**/dir1/**</includes> 
          </fileset> 
          <fileset> 
           <directory>${basedir}</directory> 
           <includes>**/dir2/**</includes> 
          </fileset> 
          <fileset> 
           <directory>${basedir}</directory> 
           <includes>**/dir3/**</includes> 
          </fileset> 
         </filesets> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+1

您錯過了中的元素。 – flob 2017-04-21 10:16:30

相關問題