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
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.
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:
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: