Definicja #
Apache Maven to narzędzie do automatyzacji budowania projektów, zarządzania zależnościami i cyklem życia projektu Java. Stworzony przez Apache Software Foundation w 2004 roku, jest jednym z najbardziej rozpowszechnionych narzędzi build w ekosystemie JVM.
Centralnym elementem Maven jest plik pom.xml (Project Object Model) — deklaratywna konfiguracja XML opisująca strukturę projektu, zależności, wtyczki i cele budowania.
Kluczowe koncepcje:
- Cykl życia build — fazy: validate, compile, test, package, verify, install, deploy
- Repozytoria — Maven Central (publiczne), repozytoria prywatne (Nexus, Artifactory)
- Coordinates — unikalny identyfikator artefaktu: groupId:artifactId:version (GAV)
- Wtyczki (plugins) — rozszerzenia wykonujące cele (goals) w poszczególnych fazach
- Dziedziczenie POM — parent POM dla wielomodułowych projektów
Główny konkurent to Gradle (bardziej elastyczny, szybszy dzięki buforowaniu), obie opcje są powszechnie stosowane w projektach Java i Kotlin (Android).
Zastosowania #
Maven stosuje się do:
- Zarządzania zależnościami w projektach Java, Kotlin i Scala — automatyczne pobieranie bibliotek z Maven Central
- Automatyzacji budowania i pakowania aplikacji (JAR, WAR, EAR)
- Integracji z CI/CD — Jenkins, GitHub Actions, GitLab CI uruchamiają
mvn packagelubmvn deploy - Zarządzania projektami wielomodułowymi (multi-module Maven projects)
- Generowania dokumentacji (Javadoc), raportów z testów (Surefire) i analizy kodu (Checkstyle, SpotBugs)
Ścieżka nauki #
Przed nauką Maven warto znać podstawy Javy i rozumieć pojęcie biblioteki i zależności.
Zacznij od:
- Struktura projektu Maven — katalogi
src/main/java,src/test/java,target - Plik pom.xml — sekcje: dependencies, build, plugins, properties
- Podstawowe komendy:
mvn clean install,mvn test,mvn package - Szukanie zależności na mvnrepository.com
Następnie poznaj:
- Wielomodułowe projekty Maven (parent/child POM)
- Profile Maven — różne konfiguracje dla dev/test/prod
- Prywatne repozytoria: Nexus lub JFrog Artifactory
- Porównaj z Gradle — w Kotlinie i Androidzie Gradle jest standardem
FAQ #
- Czym różni się Maven od Gradle?
- Maven używa deklaratywnego XML (pom.xml) i sztywnego cyklu życia, co czyni go przewidywalnym, ale mniej elastycznym. Gradle używa skryptów Groovy lub Kotlin (build.gradle) i jest szybszy dzięki inkrementalnemu budowaniu i buforowaniu. Gradle jest standardem w Androidzie.
- Czy Maven jest wymagany w projektach Java?
- Maven lub Gradle są standardem w każdym profesjonalnym projekcie Java. Bezpośrednia kompilacja przez javac bez narzędzia build praktycznie nie występuje w nowoczesnych projektach.
- Jak długo uczyć się Mavena?
- Podstawy Maven można opanować w kilka dni — struktura projektu, pom.xml i komendy są stosunkowo proste. Zaawansowane tematy (wtyczki, profile, artefaktoria) wymagają kilku tygodni praktyki.
- Ile zarabia Java Developer znający Maven?
- Maven jest umiejętnością bazową każdego Java Developera. Senior Java Developer zarabia w Polsce od 15 000 do 25 000 zł brutto, a Maven to jeden z wielu wymaganych składników skillsetu.