Otrzymałem projekt maven do skompilowania i wdrożenia na serwerze tomcat. Nigdy wcześniej nie korzystałem z maven, ale sporo googlowałem. Wygląda na to, że pom.xml
pliki najwyższego poziomu w tym projekcie mają ustawiony typ opakowania jako pom
.
Co mam zrobić po mvn install
wdrożeniu tej aplikacji? Spodziewałem się, że będę w stanie znaleźć war
gdzieś plik lub coś, ale myślę, że szukam w złym miejscu lub brakuje mi kroku.
Odpowiedzi:
pom
jest w zasadzie kontenerem podmodułów, każdy podmoduł jest reprezentowany przez podkatalog w tym samym katalogu, co wpom.xml
przypadkupom
pakowania.Gdzieś, zagnieżdżone w strukturze projektu, znajdziesz artefakty (moduły) z
war
opakowaniem. Maven generalnie buduje wszystko w/target
podkatalogach każdego modułu. Więc pomvn install
przejrzeniutarget
podkatalogu w module zwar
opakowaniem.Oczywiście:
działa równie dobrze ;-).
źródło
opakowanie pom to po prostu specyfikacja, która stwierdza, że głównym artefaktem nie jest wojna ani słoik, ale sam pom.xml.
Często jest używany w połączeniu z „modułami”, które zwykle znajdują się w podkatalogach danego projektu; jednak może być również używany w niektórych scenariuszach, w których żaden podstawowy plik binarny nie miał być zbudowany, wszystkie inne ważne artefakty zostały zadeklarowane jako drugorzędne artefakty
Pomyśl o projekcie „dokumentacyjnym”, głównym artefaktem może być plik PDF, ale jest już zbudowany, a praca nad zadeklarowaniem go jako dodatkowego artefaktu może być pożądana w konfiguracji, aby powiedzieć mavenowi, jak zbudować plik PDF, który nie wymaga skompilowane.
źródło
Pakowanie
pom
jest używane w projektach, które agregują inne projekty, oraz w projektach, których jedynym użytecznym wynikiem jest dołączony artefakt z jakiejś wtyczki. W twoim przypadku zgaduję, że twój najwyższy poziom pom obejmuje<modules>...</modules>
agregację innych katalogów, a rzeczywiste dane wyjściowe są wynikiem jednego z innych (prawdopodobnie pod-) katalogów. Jeśli zostanie odpowiednio zakodowany w tym celu, będzie miał opakowaniewar
.źródło
Aby po prostu odpowiedzieć na twoje pytanie, kiedy wykonujesz mvn: install , maven utworzy spakowany artefakt na podstawie ( atrybut pakowania w pom.xml), Po uruchomieniu instalacji mavena możesz znaleźć plik z rozszerzeniem .package
źródło
Pakowanie artefaktu jako POM oznacza, że ma on bardzo prosty cykl życia
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Jest to przydatne, jeśli wdrażasz plik pom.xml lub projekt, który nie pasuje do innych typów opakowań.
Używamy opakowań pom w wielu naszych projektach i w razie potrzeby wiążemy dodatkowe fazy i cele.
Na przykład niektóre z naszych aplikacji używają:
Po zainstalowaniu aplikacji mvn należy ją dodać do lokalnego repozytorium .m2. Aby publikować w innym miejscu, musisz skonfigurować prawidłowe informacje dotyczące zarządzania dystrybucją. Może być również konieczne użycie wtyczki pomocniczej Maven builder, jeśli artefakty nie są automatycznie dołączane przez Mavena.
źródło
Proponuję zobaczyć klasyczny przykład pod adresem : http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once
Tutaj my-webapp to projekt sieciowy, który zależy od kodu w projekcie my-app. Aby połączyć dwa projekty w jeden, mamy pom.xml najwyższego poziomu, który wspomina, które projekty (moduły zgodnie z terminologią Mavena) mają zostać ostatecznie dołączone. Taki pom.xml na najwyższym poziomie może używać opakowań pom.
my-webapp może mieć pakiet wojenny i może być zależny od my-app. my-app może mieć opakowanie w postaci słoika.
źródło
Przykład użycia z życia wzięty
W firmie wykorzystującej język Java mieliśmy projekt w języku Python, który musiał trafić do repozytorium artefaktów Nexusa. Python tak naprawdę nie ma artefaktów, więc po prostu chciałem po prostu .tar lub .zipować pliki Pythona i wypychać. Repozytorium miało już integrację z maven, więc użyliśmy
<packaging>pom</packaging>
desygnatora z wtyczką zespołu maven do spakowania projektu Pythona jako pliku.zip
i przesłania go.Kroki są opisane w tym poście SO
źródło
Opakowanie „pom” to nic innego jak pojemnik, który zawiera inne opakowania / moduły, takie jak słoik, wojna i ucho.
jeśli wykonasz jakąkolwiek operację na zewnętrznym pakiecie / kontenerze, taką jak mvn clean compile install. wtedy wewnętrzne pakiety / moduły również otrzymają czystą instalację kompilacji.
nie ma potrzeby wykonywania oddzielnej operacji dla każdego pakietu / modułu.
źródło
https://maven.apache.org/pom.html
Typ opakowania wymagany dla projektów nadrzędnych i agregacyjnych (wielomodułowych). Te typy definiują cele powiązane z zestawem etapów cyklu życia. Na przykład, jeśli opakowanie to słoik, faza pakowania wykona cel jar: jar. Jeśli opakowaniem jest pom, realizowanym celem będzie site: attach-descriptor
źródło
POM (Project Object Model) to nic innego jak skrypt automatyzacji do budowania projektu, możemy napisać skrypt automatyzacji w XML, pliki skryptów budowania mają różne nazwy w różnych narzędziach automatyzacji
tak jak nazywamy build.xml w ANT, pom.xml w MAVEN
MAVEN może pakować słoiki, wojny, uszy i POM, co jest dla nas nowością
Jeśli chcesz, sprawdź CO TO JEST POM.XML
źródło