web-dev-qa-db-fra.com

Supprimer ou supprimer des fichiers de ressources du répertoire cible à l'aide d'un fichier pom

J'ai deux profils dans pom.xml et des fichiers de ressources que j'ai ajoutés au répertoire de ressources cible: ${project.build.outputDirectory}/resources lors de l'exécution du premier profil. Ce que je dois faire est de supprimer ces fichiers de ressources lors de l’exécution du deuxième profil . Y at-il un moyen de supprimer ou de supprimer des fichiers existants du répertoire cible? 

28
Kaustubh Najan

J'ai la solution .. !!

<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
    <execution>
        <phase>test</phase>
        <goals>
            <goal>run</goal>
        </goals>
        <configuration>
            <tasks>
                <delete>
                    <fileset dir="${project.build.outputDirectory}/resources" includes="*.xml" />
                </delete>
            </tasks>
        </configuration>
    </execution>
</executions>
</plugin>

pour référence - http://maven.Apache.org/guides/mini/guide-building-for-different-environments.html

30
Kaustubh Najan

Je suis d'accord avec les observations de Matthew, mais j'ai eu l'impression que l'affiche originale demandait comment automatiser l'exécution de clean pendant "l'exécution" (normale) d'un profil.

Vous pouvez définir une exécution plugin pour le plug-in Maven Clean. Il n'est normalement lié qu'à clean, mais en définissant une exécution de plug-in, vous pouvez lier clean:clean (c'est-à-dire l'objectif clean du plugin clean) à la phase cycle de vie de votre choix. La documentation du plug-in Maven Clean contient un exemple expliquant comment faire cela. La documentation contient également un exemple de suppression de fichiers supplémentaires. Fusionné les deux ressemble à ceci:

  <plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.5</version>
    <executions>
      <execution>
        <id>auto-clean</id>
        <phase>initialize</phase>
        <goals>
          <goal>clean</goal>
        </goals>
        <configuration>
         <filesets>
            <fileset>
              <directory>some/relative/path</directory>
            </fileset>
          </filesets>
        </configuration>
      </execution>
    </executions>
  </plugin>
28
Sander Verhagen

mvn clean supprimera le répertoire target (et donc tous les fichiers qu'il contient). Si vous souhaitez supprimer uniquement certains fichiers du répertoire target, combinez les éléments suivants:

  • excludeDefaultDirectories pour l'empêcher de supprimer tout le répertoire, et 

  • filesets pour lui dire quoi supprimer

ref: http://maven.Apache.org/plugins/maven-clean-plugin/clean-mojo.html

14
Matthew Gilliard

Solution avec Apache Maven AntRun Plugin 1.8 :

<plugin>
  <groupId>org.Apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.8</version>
  <executions>
    <execution>
      <phase>initialize</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <target>
          <delete 
            dir="${project.build.outputDirectory}/resources"
            includeemptydirs="true"/>
        </target>
      </configuration>
    </execution>
  </executions>
</plugin>
7
Benny Neugebauer

grâce aux réponses ci-dessus. enfin je suis arrivé à quelque chose comme:

si vous voulez j_ {ust delete} _ _ {some dans le dossier cible, vous devez créer une construction comme celle-ci.
ceci par exemple ne supprime que tout le contenu des dossiers: 

  • cible/décompresser
  • gen-external-apklibs

excludeDefaultDirectories permet de n ne pas supprimer le dossier cible complet.
Je l’ai utilisé pour nettoyer le dossier cible avant l’analyse des peluches.

       <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>Deleting all unnecessary files before lint analysis</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>clean</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludeDefaultDirectories>true</excludeDefaultDirectories>
                <filesets>
                    <fileset>
                        <directory>target/unpack</directory>
                        <followSymlinks>false</followSymlinks>
                        <excludes>
                            <exclude>*</exclude>
                        </excludes>
                    </fileset>
                    <fileset>
                        <directory>gen-external-apklibs</directory>
                        <followSymlinks>false</followSymlinks>
                        <excludes>
                            <exclude>*</exclude>
                        </excludes>
                    </fileset>
                </filesets>
                <verbose>true</verbose>
            </configuration>
        </plugin>
3
cV2

Je n'avais besoin que de quelques fichiers supprimés du répertoire de sortie, les opérations suivantes ont bien fonctionné pour moi.

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <delete file="${project.build.outputDirectory}/appContextLocal.xml" />
                    <delete
                        file="${project.build.outputDirectory}/appContextServer.xml" />
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

J'ai également pensé que vous pouvez exécuter n'importe quelle commande de fourmi ici pour remplacer la tâche dont vous avez besoin entre le <tasks> .... </tasks> et cela fonctionnera. 

La liste des tâches de fourmi que vous pouvez effectuer est ici

Réf: http://maven.Apache.org/plugins/maven-antrun-plugin/usage.html

1
Zeus