Warum ist modelVersion von pom.xml notwendig und immer auf 4.0.0 gesetzt?


93

Ich habe bemerkt, dass Maven <modelVersion></modelVersion> von pom.xml immer auf 4.0.0 eingestellt ist.

Können Sie mir bitte helfen zu verstehen, welche Bedeutung dieses Tag hat und warum es auf 4.0.0 gesetzt werden sollte?


Willkommen bei stackoverflow. Sie sollten dies lesen: stackoverflow.com/questions/how-to-ask - Könnten Sie auch etwas spezifischer sein?
Zeveso

8
Entschuldigung, aber Wlll hat es gut verstanden.
Vielen

Antworten:


84

In Maven 2 und 3 ist es immer auf 4.0.0 eingestellt, da es derzeit kein anderes Modell gibt.

Beachten Sie, dass modelVersion4.0.0 enthält. Dies ist derzeit die einzige unterstützte POM-Version und wird immer benötigt. [ Quelle ]

Aber es würde nicht unbedingt brauchen , um immer auf 4.0.0 gesetzt werden , wenn es eine andere Version des Modells ist. Ein POM muss einem Modell entsprechen. Nehmen wir an, Maven 4 wartet mit Modell 4.1 auf. Wenn Sie Ihren POM so schreiben, dass er 4.1 entspricht, ist er nicht mit Maven 3 und Modell 4.0.0 kompatibel.

Es ist als obligatorisch definiert, möglicherweise um ein bestimmtes XML-Modell durchzusetzen, falls neue Modelle definiert werden.


LOL meine App war auf Version 4 und ich habe einen Fehler beim Aktualisieren der Version auf 5 bekommen!
Chloe

7

Die Modellversion ist die Version des Projektdeskriptors, der Ihr POM entspricht. Es muss enthalten sein und ist gesetzt. Der Wert 4.0.0 zeigt nur an, dass es mit Maven 3 kompatibel ist.



2

modelVersion - enthält die Modellversion des POM. Maven 1.x verwendete ein Modell, das ein 3.0.0-Element als unmittelbares untergeordnetes Element der Wurzel enthielt. Maven 2.x / 3.x hat ein 4.0.0-Element verwendet.

version - enthält die Version des Projekts. Wenn dieses Attribut fehlt, muss das übergeordnete Element vorhanden sein und die Version wird vom übergeordneten Projekt geerbt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.