10
votes

Comment supprimer des artefacts de construction générés du répertoire cible de Maven?

Comment supprimer des artefacts de construction générés du répertoire cible de Maven? Maven génère un bocal ou un fichier de guerre pour cibler le répertoire. J'aimerais supprimer ce fichier après que Maven ait installé le fichier Jar / War au référentiel local (c'est-à-dire après que Maven a exécuté l'objectif «Installer»). La suppression pourrait se produire à l'installation d'installation ou à un objectif séparé que j'exécute manuellement.

Remarque, que j'aimerais laisser d'autres parties du répertoire cible intactes, par exemple cible / site et cible / Surefire-Rapports.


3 commentaires

Par curiosité, quelle est la raison derrière cela?


J'ai déjà vu cela auparavant lorsque quelqu'un veut créer un artefact tel qu'un fichier EXE NSIS, mais utilisez le type d'artefact JAR, car il dispose d'un ensemble pratique de liaisons de cycle de vie, ou si elles ne se soucient pas de l'artefact intermédiaire (par exemple. le fichier JAR à partir duquel l'EXE est produit.)


Fondamentalement, j'exécute la construction Maven dans un serveur d'intégration continue et je ne suis intéressé que par des rapports et des trucs qui sont installés au repo local. Le reste des fichiers ne fait que perdre de l'espace et mes fichiers de jar se produisent plutôt volumineux.


3 Réponses :


0
votes

Il n'y a rien de construit dans Maven qui peut faire cela. Vous pouvez utiliser le Plugin Antrun pour exécuter un script ANT après l'installation qui supprime Artefact ou utilisez le Exec Plugin pour utiliser la commande ligne pour supprimer l'artefact ou écrire votre propre plug-in.

Je suggère qu'il y a peu de valeur, le cas échéant, dans l'une de ces choses. Maven est conçu pour placer des artefacts intermédiaires et finaux dans cible pour créer des constructions de suivi plus efficaces. La raison pour laquelle il n'y a rien de disponible pour le faire est déjà un indicateur que cela a peu de valeur. Si cela vous est utile, vous avez quelques options.


1 commentaires

Eh bien, ce n'est tout simplement pas vrai. Voir la réponse de Domi. Ayant cela dit, je me demande toujours pourquoi cela ferait-il cela.



19
votes

Utilisez simplement le plugin propre et exécutez une exécution après la phase d'installation:

  <plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.2</version>
    <executions>
      <execution>
        <id>auto-clean</id>
        <phase>install</phase>
        <goals>
          <goal>clean</goal>
        </goals>
        <configuration>
          <filesets>
            <fileset>
              <directory>${project.build.outputDirectory}</directory>
              <includes>
                <include>**/*.jar</include>
              </includes>
            </fileset>
           </filesets>
         </configuration>
      </execution>
    </executions>
  </plugin>


2 commentaires

+1 pour le filtre, mais l'élément de répertoire doit être $ {projeter.build.outputdirectory} pour permettre des valeurs remplacées


Je devais supprimer uniquement un répertoire particulier des résultats. Depuis la version 2.3, le plugin supprime le répertoire entier par défaut, sauf si vous spécifiez la propriété excllureFaultDirectories dans la balise .



0
votes

Je sais que je suis un peu en retard. Mais je suppose que la question était qu'un projet maven archive automatiquement les artefacts. Dans mon cas, j'ai désactivé l'archivage automatique et je viens d'archiver les artefacts manuellement à l'aide des actions post-construction. De cette façon, seuls les artefacts que je suis intéressé sont archivés. Je suis prêt à laisser les artefacts générés sur disque jusqu'à ce que la prochaine version exécute.


0 commentaires