2010-05-26 14 views
12

so che questo è probabilmente disapprovato dagli amanti del maven, ma l'intera directory 'target' è uno spreco di spazio nel contesto del nostro programma e della sua implementazione. abbiamo altri processi di compilazione responsabili della creazione della distribuzione effettiva e attualmente elimino manualmente la directory di destinazione dopo ogni generazione di maven, in modo che il suo contenuto non interferisca con le mie ricerche di file ecc ...cancella la directory 'target' dopo la build

c'è un modo per eliminare questo dir automaticamente alla fine di una build/installazione di maven?

grazie, p.

risposta

14

Utilizzare il Maven-clean-plugin come qui http://maven.apache.org/plugins/maven-clean-plugin/examples/delete_additional_files.html

<project> 


[...] 
    <build> 
<plugins> 
    <plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.4.1</version> 
    <executions> 
     <execution> 
     <id>auto-clean</id> 
     <phase>install</phase> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 
    </build> 
    [...] 
</project> 
+0

Questo eseguirà la pulizia all'inizio della costruzione e non alla fine. – khmarbaise

+1

@khmarbaise: ho cambiato la fase di installazione e funziona anche alla fine. Ma sto chiamando mvn install. Per far funzionare un pacchetto mvn, ho bisogno di usare la fase per maven-clean-plugin come pacchetto, e lo fa alla fine. – JoseK

+0

Basta fare attenzione a non eliminare prima di installare o installare la fase, il progetto diventerà inutile. – sal

5

Si dovrà semplicemente aggiungere l'obiettivo pulito per i vostri obiettivi Maven alla fine.

mvn install clean 

Il problema con il clean-plugin è che se vi piace correre la pulizia alla fine della compilazione dipende che obiettivo hai chiamato all'inizio. Ad esempio hai chiamato il pacchetto mvn devi avere un pacchetto post di fase che non esiste o se hai chiamato mvn install devi avere fase post-installazione che non esiste neanche.

+0

@khmarbaise - clean-plugin funziona con l'installazione/pacchetto di fase anche al fine. non hai bisogno di post-installazione/post-pacchetto. ma ha bisogno di abbinare la fase originale chiamata. – JoseK

3

Il modo più semplice è semplicemente aggiungere "pulito" alla fine del normale comando di compilazione. per esempio. mvn clean install clean.

2

se si vuole j Ust eliminarealcuni directory nella cartella di destinazione, è necessario creare un certo costrutto come questo.
questo per esempio cancella solo tutti i contenuti delle cartelle:

  • target/decomprimere
  • generatori esterni-apklibs

excludeDefaultDirectories permette di n ot eliminare completa cartella di destinazione.
l'ho usato per pulire la cartella di destinazione prima dell'analisi del lint.

 <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> 
Problemi correlati