Installa il POM padre senza creare moduli figlio


115

Ho un genitore POM in un progetto Maven, con questa struttura:

             parent
               |
        ---------------
        |             |
      child1       child2

Voglio installare il POM del "genitore" nel REPO locale per consentire a child1 di apportare alcune modifiche che ho fatto in dependencyManagement, ma non posso eseguire una "installazione pulita" regolare perché "child2" è guasto e non verrà compilato .

Qual è il modo corretto per farlo con Maven (a parte andare dal genitore pom e commentare il modulo "child2" ).

Risposte:


191

Usa l'opzione "-N" nel comando mvn.

Da mvn -h:

-N, - non ricorsivo Non ricorre ai sottoprogetti


1
L'opzione "-N" o "--non-recursive" significa che non si ricorre ai sottoprogetti.
STB Land

36

Sebbene Guillaume abbia davvero ragione e questa è l'opzione corretta, consiglierei personalmente di mantenere il tuo genitore come modulo separato.

Trovo che l'approccio migliore per l'ereditarietà sia il seguente:

aggregator
|- module1/ (extends parent)
| |- pom.xml
|- module2/ (extends parent)
| |- pom.xml
|- parent/
| |- pom.xml
|- pom.xml

In questo modo puoi sempre installare solo il genitore, mvn clean installsenza opzioni extra.

Puoi anche avere il genitore al di fuori dell'aggregatore in modo da poterlo riutilizzare tra più progetti.

Ci sono numerosi vantaggi nel mantenere il genitore e l'aggregatore come due cose separate. Ma alla fine, scegli ciò che è meglio per il tuo progetto / ambiente.


1
Ho lottato con questo problema per ore e ho scoperto che alcuni progetti stanno andando in questo modo, come Apache Sling, JackRabbit e Artifactory.
accuya

Ha isolato l'ereditarietà dei moduli Maven (dipendenze, proprietà, ecc.) Dalla creazione in batch (moduli figlio).
Marinaio

4
È considerata una best practice? Qualche blog o altro su questo approccio?
Slitta

1
@ArtB Nel frattempo ti sei imbattuto in un articolo del genere?
Tomislav Nakic-Alfirevic

4
@MaximilianSchulz: Non esiste un mondo perfetto, come si suol dire ... Questa è solo un'opzione per farlo.
carlspring
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.