Installieren Sie das übergeordnete POM, ohne untergeordnete Module zu erstellen

115

Ich habe ein übergeordnetes POM in einem Maven-Projekt mit folgender Struktur:

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

Ich möchte das POM des "übergeordneten Elements " im lokalen REPO installieren, damit child1 einige Änderungen vornehmen kann, die ich im dependencyManagement vorgenommen habe. Ich kann jedoch keine reguläre "Neuinstallation" durchführen, da "child2" fehlerhaft ist und nicht erstellt wird.

Welches ist der richtige Weg, um dies mit maven zu tun (außer zum übergeordneten pom zu gehen und das "child2" -Modul zu kommentieren ).

Mr.Eddart
quelle

Antworten:

191

Verwenden Sie die Option '-N' im Befehl mvn.

Von mvn -h:

-N, - nicht rekursiv Nicht in Unterprojekte zurückgreifen

Guillaume Polet
quelle
1
Die Option '-N' oder '--non-recursive' bedeutet, dass Sie nicht in Unterprojekte zurückgreifen.
STB Land
36

Obwohl Guillaume in der Tat Recht hat und dies die richtige Option ist, würde ich persönlich empfehlen, Ihre Eltern als separates Modul zu behalten.

Ich finde den besten Ansatz für die Vererbung wie folgt:

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

Auf diese Weise können Sie immer nur das übergeordnete Element mvn clean installohne zusätzliche Optionen installieren .

Sie können das übergeordnete Element auch außerhalb des Aggregators haben, damit Sie es zwischen mehreren Projekten wiederverwenden können.

Es gibt zahlreiche Vorteile, wenn Eltern und Aggregator als zwei getrennte Dinge betrachtet werden. Am Ende entscheiden Sie jedoch, was für Ihr Projekt / Ihre Umgebung am besten ist.

Carlspring
quelle
1
Ich hatte stundenlang mit diesem Problem zu kämpfen und stellte fest, dass einige Projekte auf diese Weise funktionieren, wie Apache Sling, JackRabbit und Artifactory.
Accuya
Es hat die Vererbung von Maven-Modulen (Abhängigkeiten, Eigenschaften usw.) vom Batch-Erstellen (untergeordnete Module) isoliert.
Danubian Sailor
4
Wird dies als Best Practice angesehen? Irgendwelche Blogs oder andere zu diesem Ansatz?
Schlitten
1
@ArtB Bist du in der Zwischenzeit auf einen solchen Artikel gestoßen?
Tomislav Nakic-Alfirevic
4
@ MaximilianSchulz: Es gibt keine perfekte Welt, wie sie sagen ... Dies ist nur eine Möglichkeit, dies zu tun.
Carlspring