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
To może być koniec podziału na PC i konsole – Xbox połączy zwaśnione światy?
Grasz na gitarze? GuitarTuna to nie wszystko – musisz poznać te aplikacje!
Tego o instaxie nikt nam nie mówi. Znów się go pozbywam
Żarty się skończyły. Oto perfumy dla graczy
Uważaj na Switcha 2. Nintendo rozpoczyna śledztwo
Europa ma swoje DNSy. Będziesz chciał z nich skorzystać
mObywatel szykuje prawdziwą bombę. Warto czekać!
Nintendo Switch 2 zrobiło to dobrze. Mam tylko wątpliwości, czy jest się z czego cieszyć
Tytuły anime to absurd. Ale winni są czytelnicy
Kto stoi za MacAllisterem? Marka z Castoramy pod lupą.
Dobra wiadomość! Nie trzeba kupować tego dodatku do Switcha, wystarczy smartfon
Głośnik Bluetooth w sensownej cenie. Najlepsze alternatywy dla JBL Charge.
T-Mobile nie uniknie wysokiej kary. Sąd stanął po stronie klientów
Elektronika na pokładzie samolotu. Zasady, o których musisz wiedzieć!
Energia kosmiczna. Jak w przyszłości będzie wyglądać zasilanie poza Ziemią?
Czy klawiatury mechaniczne są tylko dla komputerowych świrusów?
Wyciekł film promujący nowe urządzenie Garmin. Potwierdza przecieki
Weekend z darmowymi hitami. Warto skorzystać już teraz
Budowlańcy mogą mieć problem. Te cacka zabiorą im robotę
Dexter z Leroy Merlin: Sprawdzamy, co kryje się za niską ceną
Ocalić od zapomnienia
Ostatni kwant
ALH 84001 – meteoryt, o którym mówiono nawet w Białym Domu
HESS zarejestrował kosmiczny elektron o niespotykanej energii [Phys. Rev. Lett.]
Matka ciemnej materii – recenzja biografii “Vera Rubin. Życie”
Satelita, który zerwał się ze smyczy
Wiadomość od Carla Sagana do przyszłych eksploratorów Marsa
Ile najdłużej może trwać zaćmienie Słońca?
Nowa największa liczba pierwsza ma ponad 41 milionów cyfr [GIMPS]
Pulsar 4U 1820-30 wykonuje 716 obrotów na sekundę [AJ]
Nasze podsumowanie Comic Con Baltics 2025
Mała wielka mysz. Glorious Model O 2 mini – recenzja
Tak było na Comic Con Baltics 2025 w Wilnie (Relacja)
O przedsprzedaży Pixel 9a w samochodzie – Odcinek #122
Obejrzeliśmy Ukryty Poziom na raz – No Movie Ci
Premiera Nintendo Switch 2, seriale, i piwniczne artefakty – Odcinek #121
Ludzieee, wy tego używacie? Recenzja klawiatury Trust GXT 867 Acira
Sympatyczny mały flagowiec. Samsung Galaxy S25 – recenzja
Recenzja pionowej myszy Natec Crake 2. Się wziął gruby i nawrócił
Podsumowanie 2024 roku: Gry, Smartfony, Seriale – Odcinek #120

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.