Maven

Im większy projekt tym większa liczba bibliotek i zależności z których korzysta, a przecież każda z bibliotek może wystąpić w różnych wersjach. Zarządzanie dużą liczbą zależności nie jest zadaniem prostym. Każdorazowe uruchomienie projektu na nowej maszynie wymaga zadbania o to aby wszystkie zależności i wymagania zostały spełnione, co wiązałoby się z dużą ilością pracy - ściąganiem kodu z repozytoriów, przygotowaniem skryptów do budowania, uruchomieniem testów. Na szczęście wszystkie te czynności można zoptymalizować wykorzystując Apache Maven

Co to jest Maven?

Maven to narzędzie automatyzujące proces budowy początkowo tylko projektów tworzonych w języku Java, natomiast dzisiaj umożliwia również pracę z takimi językami jak C#, Ruby czy Scala. Pierwsza wersja powstała w lipcu 2004 roku. Dziś aktualną wersją jest wersja nr 3. Przez lata ten framework stał się bardzo popularny, co przekłada się na rosnącą ilość artefaktów znajdujących się w repozytorium Maven.

Maven_repository_artifact_growth

Gwałtowny wzrost artefaktów w repozytorium Mavena

Podstawowym celem Apache Maven jest umożliwienie programistom opanowania procesu budowania projektu w jak najkrótszym czasie. Dlatego Maven skupia się na kilku podstawowych problemach:

  • Ułatwienie procesu budowania projektu
  • Zapewnienie jednolitego systemu kompilacji
  • Zapewnienie wysokiej jakości informacji o projekcie
  • Zachęcanie programistów do lepszych praktyk

Cykl życia

Maven bierze udział w całym procesie budowania projektu. Jest to narzędzie, które potrafi pobrać wskazane biblioteki w odpowiednich wersjach, zbudować projekt, przeprowadzić testy a nawet wrzucić zbudowaną aplikację na serwer. Jak widać wiele czynności może zostać zautomatyzowane co nie tylko zmniejsza narzut pracy potrzebnej do zbudowania i uruchomienia nowej wersji aplikacji, ale również zmniejsza liczbę błędów, które mogą wystąpić. Zadania wykonywane przez Maven określane są jako cykl życia. Jest to osiem uszeregowanych kolejno zadań najważniejszych z punktu widzenia aplikacji:

  • validate: sprawdzenie poprawności projektu i dostępności wszystkich niezbędnych informacji
  • compile: skompilowanie kodu źródłowego projektu
  • test: przetestowanie skompilowanego kodu źródłowego przy użyciu odpowiedniego środowiska do testów jednostkowych. Testy te nie powinny wymagać pakowania ani wdrażania kodu
  • package: spakowanie skompilowanego kodu w formacie przeznaczonym do dystrybucji, takim jak JAR.
  • integration-test: przetworzenie i wdrożenie pakietu, jeśli to konieczne, w środowisku, w którym można uruchomić testy integracyjne
  • verify: sprawdzenie, czy pakiet jest ważny i spełnia kryteria jakości
  • install: instalacja pakietu w lokalnym repozytorium, aby użyć go jako zależności w innych projektach lokalnie
  • deploy: umieszczenie paczki na serwerze.

Źródła

  • https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
  • https://en.wikipedia.org/wiki/Apache_Maven