web-dev-qa-db-fra.com

Maven - comment supprimer le contenu d'un dossier pendant une phase de nettoyage?

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?

38
janhink

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

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.

6
Jason K

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. 

2
isobar

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

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>
0
Eliran Mesika