dans mon projet, j'ai un dossier appelé war
. Il est initialement vide et sous contrôle de version. Le dossier est rempli par Maven au cours de sa phase package
et le plug-in WST d'Eclipse déploie l'application Web à partir de ce dossier.
Ce que je veux, c'est supprimer le contenu du dossier war
pendant la phase clean
mais pas le dossier lui-même. Comment je fais ça? Jusqu'à présent, je sais comment supprimer tout le dossier 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>
Comment supprimer uniquement le contenu du dossier war
mais pas le dossier lui-même? Je sais qu'en ajoutant des exclus existants, le dossier ne sera pas supprimé. Mais comment ne supprimer généralement que le contenu d'un dossier?
Ajouter cette section includes
à la définition de votre ensemble de fichiers
<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>
Dans mon cas, je devais supprimer le répertoire "bin", ainsi que tout son contenu. Je l'ai fait dans mon parent pom.xml:
<fileset>
<directory>${basedir}</directory>
<includes>
<include>**/bin/**</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
Cela a permis de détecter tout répertoire bin de mon projet et de supprimer tout contenu du dossier bin.
Vous devrez utiliser le plugin maven ant et ajouter la tâche pour supprimer uniquement le contenu du dossier. Cependant, pourquoi avez-vous besoin du fichier war dans le contrôle de version? Chaque fois que vous construisez votre base de code, cela montrera qu'il y a des modifications/nouveaux fichiers (classes générées) à archiver. Si vous utilisez des conventions maven standard, le dossier cible est utilisé pour toutes les sorties.
Si vous souhaitez supprimer plusieurs répertoires de manière récursive:
<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>
pour supprimer un dossier de src/main/webapp/folder, utilisez:
<configuration>
<filesets>
<fileset>
<directory>src/main/webapp</directory>
<includes>
<include>folder/</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>