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
Coś jest w centrum Drogi Mlecznej. Czy to właśnie tego szukamy?
Radio nie do zdarcia: ponad 18,5 mln Polaków nie pozostawia złudzeń
AI upodobni się do... iOS lub Androida. Niewiarygodne, ale jednak
Pixel 10a zadebiutuje już za 2 tygodnie. Tak będzie wyglądał
Falcon 9 uziemiony. Mogło się skończyć tragedią
Lisa Su zapowiada nowego Xboxa. Znamy potencjalną datę premiery
Płacą w telefonach i telewizorach za korzystanie z AI. Całkiem odlecieli
Za ten owoc można dostać kilkadziesiąt tysięcy złotych. Dlaczego jest taki drogi? 
Keanu Reeves wraca na ekrany! Czy Apple powtórzy sukces Formuły 1?
Szybko poszło! "Reddit dla AI" już zaliczył koszmarny wyciek danych
Nioh 3 - recenzja. Napakowany jak zawsze, otwarty jak nigdy
Rewolucja na Marsie. Nie potrzebna już kontrola człowieka
Polowanie na użytkowników OtoMoto. Można stracić pieniądze
Najnowszy model Garmina w rekordowo niskiej cenie. Do tego Spotify za darmo
Nieoczywista złota kura Apple. Niedługo zarobią jeszcze więcej
T-Mobile odpala petardę - prawie tak tanio jak w Nju Mobile
Apple chce w tym roku zaszaleć. Szykujcie się na niespodzianki co tydzień
e-PIT odcina użytkowników. Dostęp do usługi zostanie wyłączony
Nowy Samsung Galaxy już niedługo. Czego możemy się spodziewać po nowym flagowcu Samsunga?
Początek kłopotów Muska. Policja wdarła się do biur
To by było na tyle, jeśli chodzi o możliwość ugody
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]
30 lat konsoli PlayStation – Odcinek #130
Omawiamy serię The Walking Dead (gość: Stary Gracz)
Nikt nie potrzebuje cienkich smartfonów – Odcinek #129
To ostatni dzwonek na kolekcjonowanie gier i filmów
Najlepsza relacja z PGA 2025 (Poznań Game Arena)
Bumblebee wśród klawiatur. Marvo Meqa 80W – recenzja
Pierwsze spotkanie z Omoda 7 Super Hybrid
Logitech MX Master 4, Wednesday, 1670 sezon 2 – Odcinek #128
Tani pad, który chciał być jak DualSense. Test Monka Contra GT-96
Secret Service i prasa komputerowa w Polsce – Odcinek #127

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.