Dlaczego modelVersion pom.xml jest konieczny i zawsze ustawiony na 4.0.0?

95

Zauważyłem, że Maven's <modelVersion></modelVersion>z pom.xml jest zawsze ustawiony na 4.0.0.

Czy możesz mi pomóc zrozumieć, jakie jest znaczenie tego tagu i dlaczego powinien być ustawiony na 4.0.0?

mahesh
źródło
Witamy w stackoverflow. Powinieneś przeczytać to: stackoverflow.com/questions/how-to-ask - Czy mógłbyś być bardziej szczegółowy?
Zeveso
8
przepraszam, ale Wlll dobrze to zrozumiał. dzięki za pomoc
mahesh

Odpowiedzi:

89

Jest zawsze ustawiony na 4.0.0 w Maven 2 i 3, ponieważ obecnie nie ma innego modelu.

Zauważ, że modelVersionzawiera 4.0.0. Jest to obecnie jedyna obsługiwana wersja POM i jest zawsze wymagana. [ źródło ]

Ale niekoniecznie musi być zawsze ustawione na 4.0.0, gdyby istniała inna wersja modelu. POM musi być zgodny z modelem. Powiedzmy, że Maven 4 ma model 4.1. Jeśli napiszesz pom, aby był zgodny z 4.1, nie byłby kompatybilny z Maven 3 i modelem 4.0.0.

Jest zdefiniowany jako obowiązkowy, prawdopodobnie w celu wymuszenia określonego modelu XML w przypadku definiowania nowych modeli.

Boj
źródło
LOL, moja aplikacja była w wersji 4 i podczas aktualizacji wersji do 5 wystąpił błąd!
Chloe,
8

Wersja modelu to wersja deskryptora projektu, z którą jest zgodny twój POM. Musi być dołączony i jest ustawiony. Wartość 4.0.0 właśnie wskazywała, że ​​jest zgodna z Maven 3.

Toumi
źródło
2

modelVersion - zawiera modelową wersję pliku POM. Maven 1.x użył modelu, który zawierał element 3.0.0 jako bezpośredniego potomka katalogu głównego. Maven 2.x / 3.x użył elementu 4.0.0.

wersja - zawiera wersję projektu. Jeśli brakuje tego atrybutu, musi istnieć element nadrzędny, a wersja zostanie odziedziczona z projektu nadrzędnego.

Nilotpal
źródło