Skip to content

Witaj w Świecie Jutra!

  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
  • Home
  • Wszystko
  • Czym jest: Maven (i Gradle)?
  • Programowanie
  • Wszystko

Czym jest: Maven (i Gradle)?

Jakub Raczkowski 5 kwietnia 2024

Witajcie w pierwszym odcinku serii „Czym jest… ?”! Cykl zaczniemy od omówienia podstaw Mavena, który jest właściwie wszędzie tam gdzie Java i nawet jeśli ogłoszenie o pracę nie umieszcza Mavena w wymaganiach to zazwyczaj dlatego, że znajomość owego narzędzia to oczywista oczywistość.

Uwaga! W tej serii zajmuję się opisowym przedstawieniem tematu, a celem jest zapoznanie z zagadnieniem w sposób luźny i zrozumiały dla nowicjusza. W związku z tym wiele elementów siłą rzeczy musi zostać pominiętych. Tych z was, którzy chcieliby się dowiedzieć więcej, zapraszam do źródeł na końcu artykułu.

Wyruszacie na questa. Zabraliście prowiant, potionki, jesteście wypoczęci, mana zregenerowana, oręż naostrzony. Jest was czterech: czarodziej robi za damage dealera i nawala kulami ognia na prawo i lewo, rycerz-tank blokuje wrogów, łotrzyk rozbraja pułapki i otwiera zamki. No i oczywiście macie też kapłana, który dba o to, aby ci pozostali mogli szybko i bez przeszkód wykonywać swoje zadania. Kapłan ma na imię Maven.

W ten prosty, acz obrazowy sposób możecie sobie zwizualizować rolę Mavena w javowym projekcie. Ale żeby w pełni ogarnąć temat musimy zrozumieć problem dla którego omawiane narzędzie jest rozwiązaniem. Cofnijmy się do roku 1995 kiedy to narodziła się Java.

Mamy oto następującą sytuację: pojawił się nowy język programowania, który za sprawą rewolucyjnej jak na tamte czasy wirtualnej maszyny Java (JVM) prędko zdobywa na popularności. Każdy chce pisać programy, które można uruchomić na pecetach, makach, a nawet na telefonach (w czasach gdy o smartfonach nikt jeszcze nie słyszał).

No i każdy pisze.

Każdy pisze po swojemu. Jeden daje testy w głównym katalogu, inny obok, trzeci w ogóle nie testuje. Ta firma wrzuca wszystkie pliki do pojedynczego folderu, tamta tworzy tysiąc pakietów, każdy do czego innego. Niektórzy czyszczą nieużywane pliki, reszta o nich zapomina. Bezużyteczne biblioteki walają się po całym module. Programista przechodzący z jednego zespołu do konkurencji spędza całe dnie na ogarnięciu tego burdelu.

Jednym słowem: „CHAOS”

Maven, który pojawia się w 2004 roku jest remedium na powyższą chorobę toczącą świat Javy. Z architektonicznego punktu widzenia:

Maven to standard

Od teraz możemy jedną komendą w wierszu poleceń stworzyć projekt mavenowy w oparciu o tzw. archetypy czyli szablony według których tworzony jest zalążek projektu. Wszystko jest elegancko popakietowane, każdy element ma swoje miejsce, wiemy co jest gdzie i dlaczego.

W IntelliJ są tylko najpopularniejsze archetypy, ale wszystkich jest około 3000!

Oryginalnie Maven działa w wierszu poleceń, niezależnie od IDE, ale obecnie jest tak sklejony z IntelliJ, że mamy wrażenie jakby to była jedna całość. Stąd równie dobrze możemy wszystko poustawiać myszką. Pamiętajmy jednak, że koniec końców:

Maven to osobny program, niezależny od IDE, ale dodający mu nowe fukcje. Jeśli miałbym go opisać jednym słowem, nazwałbym go „managerem”. O ile samo IDE pomaga w pisaniu poszczególnych linijek kodu, o tyle Maven jest nieoceniony przy zarządzaniu projektem jako całością.

Przykładowy plik pom.xml, całość tutaj.

Śmiało można rzec, że sercem projektu opartego o Maven jest plik pom.xml (skrót od Project Object Model), który zawiera takie elementy jak:

  • „gav” czyli identyfikator projektu (group-artifact-version)
  • „dependencies” czyli dodatkowe biblioteki, które trzeba dociągnąć aby kod zadziałał
  • „plugins” czyli dodatkowe, niestandardowe funkcje – sami możemy określić co Maven u nas jeszcze będzie robił (np. sprawdzał styl kodu, albo ułatwiał wersjonowanie)

Teraz jeśli potrzeba nam konkretnej biblioteki już nie musimy wyginać palców jak gitarzysta próbując naraz wcisnąć kombinację SHIFT+CTRL+ALT+S aby otworzyć okno zarządzania projektem i dodać tam plik *.jar (który uprzednio trzeba ściągnąć) z potrzebnymi klasami. Wystarczy znaleźć kilka wierszy kodu w formacie xml (zazwyczaj w oficjalnym repozytorium)…

…kopiuj-wklej i gotowe!

Podobnie sprawa ma się z tzw. lifecycle projektu, odnoszącym się do poszczególnych etapów budowania aplikacji ze stworzonych klas i interfejsów. Już nie musimy sami usuwać plików po poprzednim buildzie bo Maven zrobi to automatycznie (mvn clean), sam odpali wszystkie testy (mvn test) i sam wrzuci gotowe archiwum do zadanego repozytorium (mvn deploy). Biorąc to wszystko pod uwagę, za sukcesem i popularnością tego narzędzia stoi prosty fakt, że

Maven to zwyczajnie wygoda i oszczędność czasu

Na koniec dodam, że jakkolwiek Maven nie byłby popularny to nie jest tak, że nie ma żadnej konkurencji. Za jego następcę uważa się wspomniany w tytule Gradle, który niby jest taki jak jego protoplasta ale:

  • działa szybciej, szczególnie w bardzo dużych projektach
  • jest łatwiejszy w dostosowaniu do swoich potrzeb (ma się większą kontrolę nad projektem)
  • jest częściej stosowany w projektach androidowych z wykorzystaniem Kotlina/Groovy

Tyle na początek powinno wam wystarczyć jeśli chodzi o Mavena. Dziękuję za uwagę i zapraszam za kilka dni kiedy to zajmiemy się Gitem i GitHubem.


Źródła:
Maven w godzinę, film na YT (ANG)
Dokładny opis tego czym jest i jak korzystać z Mavena (POL)

Tags: java

Continue Reading

Previous: Junior Developer AD2024
Next: Czym jest Git (i GitHub/GitLab)?

Related Stories

Mageege Moon104 – test niskoprofilowego mechanika
  • Sprzęt

Mageege Moon104 – test niskoprofilowego mechanika

11 marca 2025
Przebranżowienie cz.4
  • Programowanie

Przebranżowienie cz.4

27 lutego 2025
Smartfon Jutra
  • Sprzęt

Smartfon Jutra

15 lutego 2025

Ze świata

  • Antyweb
  • Kwantowo
  • Dwóch po dwóch
Zła wiadomość dla użytkowników Windows 11. Microsoft nie rezygnuje z AI
Google naprawia Android Auto. Kierowcy odetchną z ulgą
FCC daje zielone światło SpaceX. Globalna sieć komórkowa coraz bliżej
T-Mobile rozdaje 30 zł. Świetna promocja
Październik w Xbox Game Pass zapowiada się świetnie. Tylu premier dawno nie było
MacBook Pro dostał nowego rywala. Oto Surface Laptop Ultra
Nowe PlayStation może pojawić się lada dzień. I nie chodzi tu o PS6
Po 16 latach wraca głośny film, który na pewno pamiętacie
Jak wygląda świt na Marsie? Właśnie tak!
Pompy ciepła, fotowoltaika i wielomilionowa kara. UOKiK prześwietlił umowy
Nowości w mObywatelu już dostępne. Przydadzą się także bez internetu
Oto nowy król grafik generowanych przez AI. Poznajcie Nano Banana 2.1
Nie wyrzucaj starego aparatu. Dasz mu drugie życie
Masz Samsunga? Lepiej nie pomijaj najbliższych aktualizacji
Elektronarzędzia Parkside na mocnych obniżkach. Kaufland wie co robi
Książulo, "MUALA" i święte oburzenie. Oto coś, co musicie wiedzieć o influencerach
Tego o zwierzętach nie wiedzieliśmy. Nowe badania odkrywają ich sekret
Mój ulubiony kontroler stał się jeszcze lepszy. Razer rozwiązał największą bolączkę
Wielkie zamieszanie wokół GTA VI. Wszystko przez jedną informację
Nie tylko iPhone? Apple stworzy... dzwonki do drzwi
O powstawaniu kamieni drogą doboru naturalnego
Świat upomina się o „właściwe” proporcje
Kosmiczna panorama i superkoronograf – co przyniesie nam Teleskop Nancy Roman?
O czym szepczą między sobą bozony Higgsa?
Wszechświat w trzech aktach – recenzja książki “Astronomia, kosmologia i astronautyka”
Wielka przerwa Wielkiego Zderzacza
A gdyby tak przeciąć foton na pół?
SpudCell – syntetyczna komórka, która udaje życie
Mega upał, omega manipulacja
Coraz więcej dowodów, coraz mniej pewności
WRZESIEŃ BĘDZIE MOCNY… Premiery gier, na które czekamy – Mamy do pogrania
Całkiem dobry film ten nowy Spider-Man: Brand New Day 🕷️ – No Movie Ci #18
Scyzorykon 2026, Galaxy Fold8 i całkiem nowy Spider-Man – Odcinek #137
Sprawdziliśmy Scyzorykon 2026 od środka!
Co się działo na Fantasy & Magic Con w Warszawie?
Porozmawiajmy o Steam Machine 🎮👀
Przedsprzedaż GTA VI, Stargate i gry, które paliły sprzęty – Odcinek #136
Relacja z CD-Action Expo 2026
Tańszy Game Pass, droższy Steam Deck i Internet 0202122 – Odcinek #135
Elite Dangerous. Gra, z której odchodzi się po cichu

To może cię zainteresować:

Mageege Moon104 – test niskoprofilowego mechanika
  • Sprzęt

Mageege Moon104 – test niskoprofilowego mechanika

11 marca 2025
Przebranżowienie cz.4
  • Programowanie

Przebranżowienie cz.4

27 lutego 2025
Smartfon Jutra
  • Sprzęt

Smartfon Jutra

15 lutego 2025
Czym jest Swagger?
  • Programowanie

Czym jest Swagger?

22 lipca 2024
  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
Copyright © All rights reserved. | DarkNews by AF themes.