Possiamo avviare la build Maven dal punto in cui non è riuscita


91

Supponiamo che io stia facendo una compilazione completa sul mio grande progetto che ha 7 moduli e sul sesto modulo, la compilazione non è riuscita perché un test è fallito. Esiste un modo per avviare la compilazione dal punto in cui non è riuscita?

Risposte:


135

Puoi riprendere la costruzione dal 6 ° modulo usando -rfo --resume-from:

-rf, --resume-from
          Riprendi il reattore dal progetto specificato

Vedere le Opzioni avanzate del reattore per i dettagli.


Grazie per questo. Ci proverò
Shekhar

1
questo va bene, per sottoprogetti basta usarlo subproject/subsubprojectcome parametro
akostadinov

13
Esempio:maven -rf <module name> clean install
Zoltán

9
Questo ha funzionato solo per me quando ho anteposto il nome del modulo con due punti, ad es mvn -rf :moduleName install. (Non sono sicuro del motivo per cui è necessario il colon, ma sembra che lo sia - almeno per la mia configurazione.)
Steve Chambers,

3
Sembra che questo installfunzioni solo se la tua build iniziale aveva un obiettivo, perché la build che riprende può quindi ottenere gli artefatti che erano già stati compilati dal tuo repository Maven locale per risolvere le dipendenze da essi. Trovo che sia una cattiva pratica eseguire installbuild poiché finisci per ingombrare il tuo repository locale con snapshot e potresti finire per dipendere da uno snapshot più vecchio di quello che ti aspetti. Sembra che per le build in cui solo tu packagee non lo fai install, l'uso -rfnon è un'opzione: dovrai fare l'intera build.
Frans

13

Ecco l'esempio

mvn clean install -rf :your-module

9

puoi riprendere la compilazione da qualsiasi modulo tu voglia usando il -rfcomando. Ad esempio, se la tua compilazione non è riuscita in myproject-proxy, puoi utilizzare il seguente comando:

mvn -rf myproject-proxy clean install

Ho dovuto mettere i due punti per farlo funzionare, ad esempio -rf: yourModule Vedi le altre risposte.
Gapmeister66

8

guarda il riepilogo di Maven e vedrai i moduli eseguiti e dove si ferma Maven. quindi prova questo:

mvn clean install-Dmaven.test.skip=true -rf :yourModule

0

Secondo " Novità di Maven 4 " (novembre 2020) di Maarten Mulders , sarai presto in grado di farlo, con l'imminente Maven 4.0.0 (1 ° trimestre 2021)

Considera questa struttura di progetto di esempio:

https://maarten.mulders.it/2020/11/whats-new-in-maven-4/example-project_hu981f14f09d98e6139a671549a98c2057_118421_1037x555_resize_box_2.png

Usa --also-make insieme a --resume-from

Il primo miglioramento nel Reactor è una correzione di bug.
In precedenza, se la compilazione del progetto non riusciva nel modulo client, si riceveva un suggerimento per riprendere la compilazione --resume-from :client. Ma se lo facessi, la build si interromperà di nuovo: questa volta perché Maven non è riuscito a trovare il modulo comune.
Potresti pensare che l'aggiunta di --also-make(o -am) risolva il problema, ma non lo farebbe. Questo bug di vecchia data non c'è più.

Se si combina --resume-from :clientcon --also-make, il Reactor troverà tutti i moduli nel progetto e continuerà la costruzione come richiesto.

Riprendi automaticamente dall'ultimo punto di errore

Ma è probabile che non te ne accorgerai. Il --resume-from :clientproblema è che ti fa pensare più del necessario.

Con Maven 4, puoi rendere la tua vita ancora più semplice e utilizzabile --resume, o -rin breve. Riprenderà automaticamente la compilazione dal modulo che ha avuto esito negativo .

Ma c'è di più! Forse stai usando build parallele . Una sequenza di moduli è stata creata con successo, mentre la creazione di un'altra sequenza di moduli è stata interrotta.
In questo scenario, l'utilizzo -rsalterà i moduli che erano riusciti nella build precedente.

La combinazione di queste due funzionalità potrebbe migliorare il tempo necessario per creare il tuo grande progetto software aziendale!


ciao @ VonC, sto chiedendo una domanda fuori tema. voglio sapere quali articoli morbidi mantieni? ho visto jira, git, maven ecc. sulla pagina del tuo profilo sei un collaboratore? e come mai sai così tanto di git? e li costruisci? Sono curioso ...
nikhil swami

1
@nikhilswami Mantengo alcuni strumenti che sto utilizzando al lavoro ( github.com/VonC ). E ho imparato Git rispondendo alle domande su Stack Overflow nel 2009. Al giorno d'oggi, sto supportando attivamente i team di sviluppatori che utilizzano Git, quindi continuo a imparare anche in questo modo.
VonC

-1

Sintassi: mvn -rf modulename mavengoal o mvn --resume-from modulename mavengoal

Es: mvn -rf admin-module clean install o mvn --resume-from admin-module clean install


-rfnon è breve per --remove-from. È l'abbreviazione di--resume-from
Gili

-2

Potresti eseguire la compilazione del modulo 6 separatamente per vedere se fallisce ancora, ma temo che tu debba compilare tutti i moduli dall'inizio quando vuoi eseguire la build "grande".

Modifica: Ovviamente le build successive saranno più veloci perché il codice dei moduli 1-5 è già compilato, a meno che non esegui pulito come parte della tua build.


Sì .. Lo so .. Ma stavo cercando un modo per iniziare la compilazione dal punto in cui è fallita ..
Shekhar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.