2009-10-12 18 views
8

Come rimuovere gli artefatti di build generati dalla directory di destinazione di Maven? Maven genera un file jar o war per la directory di destinazione. Mi piacerebbe rimuovere quel file dopo che Maven ha installato il file jar/war sul repository locale (cioè, dopo che Maven ha eseguito l'obiettivo "install"). La rimozione può avvenire sia all'atto dell'installazione che a un obiettivo separato che eseguo manualmente.Come rimuovere gli artefatti di build generati dalla directory di destinazione di Maven?

Nota: mi piacerebbe lasciare intatte altre parti della directory di destinazione, ad esempio target/site e target/surefire-reports.

+1

Per curiosità, qual è la ragione di questo? –

+0

Ho visto questo fatto prima quando qualcuno vuole creare un artefatto come un file exe NSIS ma sta usando il tipo di artefatto jar perché ha un comodo insieme di collegamenti del ciclo di vita, o se non si preoccupano del prodotto intermedio (ad esempio il file jar da cui viene creato l'exe.) –

+0

Fondamentalmente sto eseguendo la build di maven all'interno di un server di integrazione continuo e sono interessato solo ai report e alle cose che vengono installate sul repository locale. Il resto dei file sta solo sprecando spazio e i miei file jar sono piuttosto grandi. –

risposta

18

Basta usare il plugin pulito e gestito un'esecuzione dopo la fase di installazione:

<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> 
+0

+1 per il filtro, ma l'elemento di directory dovrebbe essere $ {project.build.outputDirectory} per consentire valori sovrascritti –

+5

Avevo bisogno di cancellare solo una particolare directory dai risultati. Dalla versione 2.3 il plug-in elimina l'intera directory per impostazione predefinita, a meno che non si specifica la proprietà excludeDefaultDirectories all'interno del tag . – Danny

0

Non c'è niente di simile a Maven in grado di farlo. È possibile utilizzare il plug-in antrun per eseguire uno script Ant dopo l'installazione che elimina l'artefatto oppure utilizzare il plug-in exec per utilizzare la riga di comando per eliminare l'artefatto o scrivere il proprio plug-in.

Suggerisco che c'è poco valore, se ve ne sono, nel fare una di queste cose. Maven è progettato per inserire artefatti intermedi e finali in target per rendere più efficienti le build successive. La ragione per cui non c'è nulla a disposizione per fare questo già è un indicatore che questo è di scarso valore. Se ha un valore per te, hai alcune opzioni.

+1

Beh, non è vero. Vedi la risposta di domi. Detto questo, mi chiedo ancora perché si dovrebbe fare questo. –

0

so che sono un po 'in ritardo. Ma immagino che il problema fosse che un progetto di Maven archivia automaticamente gli artefatti. Nel mio caso, ho disabilitato l'archiviazione automatica e ho appena archiviato manualmente gli artefatti usando le azioni di post-build. In questo modo, vengono archiviati solo gli artefatti che mi interessano. Sono disposto a lasciare gli artefatti generati su disco fino all'esecuzione della generazione successiva.

Problemi correlati