2011-04-18 1018 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

相关问题