2012-10-10 11 views
9

Il plug-in maven funziona molto lentamente per me. Nel mio progetto la cartella webapp ha circa 15000 piccoli file (immagini, jsp, css, ecc.). Quando l'ho assemblato con il Maven, prima copia tutti i file nella directory target/myProject-1.0.0, quindi crea il file myProject-1.0.0.war da esso. Il processo di copia dura 10 minuti, la creazione di .war richiede 2 minuti.Accelera plug-in guerra maven

Come si vede la build potrebbe essere molto più veloce se il file .war verrà assemblato direttamente dalla cartella webapp. È possibile farlo?

+0

Direttamente dalla cartella 'src/main/webapp'? Allora che dire delle dipendenze, delle risorse, ecc.? – maba

+0

@maba Certo, perché no? Jar.exe può archiviare file da più posizioni. Il compito della formica '' fa facilmente il trucco. – kan

+0

Non è il modo di fare. Potresti usare ['maven-antrun-plugin'] (http://maven.apache.org/plugins/maven-antrun-plugin/) per usare quell'attività ant. – maba

risposta

4

Suggerisco di utilizzare l'obiettivo war:inplace di maven-war-plugin insieme a un'attività personalizzata maven-antrun-plugin.

war:inplace genera la webapp nella directory di origine WAR. Creerà tutte le cartelle aggiuntive necessarie sotto webapp.

Il antrun:run può essere personalizzato per creare la guerra in base alle proprie esigenze particolari.

Questo potenzialmente migliorerà le prestazioni poiché la maggior parte di quei file di risorse presenti sarà ancora nella cartella webapp e non verrà copiata.

+0

Salva alcune delle copie assurde, ma la guerra: inplace copia anche tutte le librerie in WEB-INF/lib, che è anche inutile e problematico. 8- (Qualcuno ha effettivamente provato questo? –

3

Voglio solo ricordare che esiste un'impostazione useCache che aumenta in modo significativo le prestazioni (~ 3 minuti anziché 12). Tuttavia è accettabile solo per lo sviluppo, non per CI-server che dovrebbe sempre fare build pulite.

+1

Potresti includere la configurazione di Maven che ha ottenuto ciò che descrivi qui? –

1

Nella sezione di configurazione per il plugin war, utilizzare warSourceExcludes per escludere file e directory non necessari. Nell'esempio seguente, i componenti delle directory e node_modules saranno esclusi dalla guerra esplosa e dalla guerra finale. Nel mio caso questo ha ridotto il tempo di costruzione da 3 minuti a 14 secondi.

 <configuration> 
       <warSourceExcludes> 
       components/**, 
       node_modules/** 
       </warSourceExcludes> 
     </configuration> 
Problemi correlati