Domanda

Sto usando un artefatto locale per eseguire il proxy della richiesta, ma le fasi di compilazione e test sono ancora un po 'lente. Non è la compilazione e i test effettivi che sono lenti, è il & Quot; warmup & Quot; del framework maven2. Qualche idea?

È stato utile?

Soluzione

Esistono alcune possibilità per ottimizzare alcune delle attività di compilazione. Ad esempio, l'attività "pulita" può essere ottimizzata da pochi minuti a pochi millisecondi usando un semplice trucco: rinominare la cartella "target" anziché eliminare.

Per ottenere dettagli su come farlo, fai riferimento a Velocizza la costruzione di Maven .

Altri suggerimenti

Non so quale versione di Maven stai usando, presumo 2, ma darò quello che uso per Maven 1.x per accelerare e rendere le cose un po 'più veloci.

Questi eseguiranno il fork dei test junit in un nuovo processo (aiuta anche quando si usano variabili d'ambiente nei test ecc. e dà ai test un po 'più di memoria.

-Dmaven.junit.fork=true
-Dmaven.junit.jvmargs=-Xmx512m

In questo modo viene creata la raccolta che potrebbe accelerare le cose per te

-Dmaven.compile.fork=true

Spero che questo possa aiutare un po ', provalo.

Vedi anche ottieni più velocità con la tua build maven2 .

Se stai usando Maven3 ($ mvn -version), puoi anche seguire questo guida . Nel mio caso, i risultati sono:

Esecuzione normale:

$ mvn clean install 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:05 min
[INFO] Finished at: 2015-07-15T11:47:02+02:00
[INFO] Final Memory: 88M/384M

Con elaborazione parallela (4 thread):

$ mvn -T 4 clean install
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:22 min (Wall Clock)
[INFO] Finished at: 2015-07-15T11:50:57+02:00
[INFO] Final Memory: 80M/533M

Elaborazione parallela (2 thread per core)

$ mvn -T 2C clean install

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:12 min (Wall Clock)
[INFO] Finished at: 2015-07-15T12:00:29+02:00
[INFO] Final Memory: 87M/519M
[INFO] ------------------------------------------------------------------------

Come possiamo vedere, la differenza è quasi un minuto, quasi il 20-30% di miglioramento della velocità.

  1. Regola le configurazioni di memoria su ottimale per es: aggiungi questa linea a mvn.bat imposta MAVEN_OPTS = -Xmx512m -XX: MaxPermSize = 256m

  2. La fase pulita di mvn elimina normalmente la cartella di destinazione. Invece, se stiamo rinominando la cartella di destinazione, la fase di pulizia sarà molto più veloce. & Lt; quickClean >

  3. -Dmaven.test.skip = true salterà l'esecuzione del test.

  4. Aggiungi -Denforcer.skip = true all'argomento della riga di comando di mvn (si tratta di applicare versioni di maven, jdk ecc., possiamo saltarlo dopo le esecuzioni iniziali)

  5. Disabilita le operazioni non critiche durante la fase di costruzione: analisi, generazione javadoc, packaging sorgente. Ciò farà risparmiare molto tempo.

  6. Spawnig nuovo processo aiuta anche nel miglioramento del tempo -Dmaven.junit.fork = true (fork dei test junit in un nuovo processo) -Dmaven.compile.fork = true (modifica la compilation)

    Spero che sia d'aiuto.

Puoi usare -DskipTests=true per saltare i test unitari. che accelererebbe le build

Ho scoperto che l'analisi dei progetti di reattori è significativamente più lenta dei progetti single-pom. Se la tua build è un reattore (multi-modulo) e i tuoi sviluppatori non stanno lavorando su tutti i moduli contemporaneamente, puoi rimuovere il POM principale e costruirli separatamente, risolvendo le dipendenze usando il repository locale. Lo svantaggio è che è necessario installare o distribuire un modulo affinché i suoi dipendenti possano vedere le modifiche.

Inoltre, potresti voler dare un'occhiata al nuovo Maven 2.1 M1 che contiene alcuni miglioramenti significativi della velocità.

Se nessuno di questi aiuta, pubblica maggiori dettagli sulla configurazione del tuo progetto (struttura dei moduli e plugin), parametri della riga di comando e configurazione hardware (memoria e disco). L'esecuzione di Maven con -X potrebbe anche mostrare dove sta prendendo il suo tempo.

Userei Nexus installato localmente.

Inizialmente, dovresti ottenere un'analisi più precisa dei tuoi tempi di costruzione utilizzando qualcosa come this e identificare i candidati che impiegano più tempo.

I test eseguono la creazione di un database H2 per test? Il download di file jar esterni richiede tempo? Questo ti guiderà dove focalizzare la tua indagine. Il semplice fatto di applicare i flag go-fast di solito non funziona perché sarebbero già stati inclusi per impostazione predefinita e non vuoi sacrificare i tuoi test con skip flags.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top