Maven - 如何在清洁阶段删除文件夹的内容?

时间:2011-04-18 11:36:48

标签: maven-2 maven

在我的项目中,我有一个名为war的文件夹。它最初是空的,并且受版本控制。该文件夹在其package阶段由Maven填充,Eclipse的WST插件从该文件夹部署Web应用程序。

我想要的是在war阶段删除clean文件夹的内容,而不删除文件夹本身。我怎么做?到目前为止,我知道如何删除整个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文件夹的内容而不删除文件夹本身?我知道通过添加一些现有的排除项,该文件夹不会被删除。但是如何一般只删除文件夹的内容?

5 个答案:

答案 0 :(得分:65)

将此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 :(得分:6)

在我的情况下,我需要删除“bin”目录及其所有子目录内容。我在父pom.xml中这样做了:

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

这在我的项目中找到了任何bin目录,并删除了bin文件夹的任何内容。

答案 2 :(得分:2)

你将不得不使用maven ant插件&amp;添加任务仅删除文件夹内容。但是为什么在版本控制中需要war文件?每次构建代码库时都会显示要检入的某些修改/新文件(生成的类)。如果使用标准maven约定,则目标文件夹将用于所有输出。

答案 3 :(得分:2)

如果要以递归方式删除多个目录:

    <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>

答案 4 :(得分:0)

要从src / main / webapp / folder删除文件夹,请使用:

<configuration>
  <filesets>
    <fileset>
      <directory>src/main/webapp</directory>
      <includes>
        <include>folder/</include>
      </includes>
      <followSymlinks>false</followSymlinks>
    </fileset>
  </filesets>
</configuration>