Maven - how to delete contents of a folder during a clean phase?
in my project I have a folder called war
. It is initially empty and it's under version control. The folder gets populated by Maven during its package
phase and Eclipse's WST plugin deploys the web app from this folder.
What I want is to delete contents of the war
folder during the clean
phase but not the folder itself. How do I do that? So far I know how to delete the whole war
folder:
<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>
How do I delete only contents of the war
folder but not the folder itself? I know that by adding some existing excludes, the folder won't be deleted. But how to generally delete only contents of a folder?
Add this includes
section to your fileset definition
<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>
In my case I needed to delete the "bin" directory, and all it's subdirectory contents. I did this in my parent pom.xml:
<fileset>
<directory>${basedir}</directory>
<includes>
<include>**/bin/**</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
This found any bin directory within my project, and deleted any contents of the bin folder.
If you wan to delete more than one directory recursively:
<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>
You will have to use the maven ant plugin & add the task to delete the folder contents only. However why do you need the war file in version control? Every time you build your code base will show that there are some modifications/new files (classes generated) to be checked in. If you are using standard maven conventions the target folder is used for all output.