Výukový program Apache Maven

1. Úvod

Budovanie softvérového projektu zvyčajne pozostáva z úloh, ako je stiahnutie závislostí, umiestnenie ďalších pohárov na cestu triedy, kompilácia zdrojového kódu do binárneho kódu, spustenie testov, zabalenie kompilovaného kódu do nasaditeľných artefaktov, ako sú súbory JAR, WAR a ZIP, a nasadenie týchto artefaktov na aplikačný server alebo do úložiska.

Apache Maven automatizuje tieto úlohy, minimalizuje riziko chýb ľudí pri manuálnom zostavovaní softvéru a oddelení práce pri kompilácii a balení nášho kódu od procesu zostavovania kódu.

V tomto výučbe sa chystáme preskúmať tento mocný nástroj na popis, tvorbu a správu softvérových projektov Java pomocou centrálnej informácie - Objektový model projektu (POM) - to je napísané v XML.

2. Prečo používať Maven?

Kľúčové vlastnosti Mavenu sú:

  • jednoduché nastavenie projektu, ktoré sa riadi osvedčenými postupmi: Maven sa snaží vyhnúť čo najväčšej konfigurácii dodaním šablón projektu (s názvom archetypy)
  • správa závislostí: zahŕňa automatickú aktualizáciu, stiahnutie a overenie kompatibility, ako aj hlásenie uzávierok závislostí (známych tiež ako tranzitívne závislosti)
  • izolácia medzi závislosťami od projektu a doplnkami: s Mavenom sa závislosti projektu získavajú z archívy závislostí zatiaľ čo závislosti ľubovoľného pluginu sa načítajú z úložiská doplnkov, čo vedie k menšiemu počtu konfliktov, keď doplnky začnú sťahovať ďalšie závislosti
  • centrálny úložný systém: Závislosti projektu je možné načítať z lokálneho súborového systému alebo verejných úložísk, napríklad Maven Central
Ak sa chcete dozvedieť, ako nainštalovať Maven do vášho systému, pozrite si tento návod na Baeldung.

3. Objektový model projektu

Konfigurácia projektu Maven sa vykonáva pomocou a Objektový model projektu (POM), zastúpeného a pom.xml spis. The POM popisuje projekt, spravuje závislosti a konfiguruje doplnky pre zostavenie softvéru.

The POM tiež definuje vzťahy medzi modulmi viacmodulových projektov. Pozrime sa na základnú štruktúru typického POM spis:

 4.0.0 org.baeldung org.baeldung jar 1.0-SNAPSHOT org.baeldung //maven.apache.org junit junit 4.12 test // ... 

Pozrime sa bližšie na tieto konštrukty.

3.1. Identifikátory projektu

Maven používa sadu identifikátorov, ktoré sa tiež nazývajú súradnice, na jednoznačnú identifikáciu projektu a určenie spôsobu zabalenia artefaktu projektu:

  • groupId - jedinečný základný názov spoločnosti alebo skupiny, ktorá projekt vytvorila
  • artifactId - jedinečný názov projektu
  • verzia - verzia projektu
  • balenie - spôsob balenia (napr. VOJNA/JAR/PSČ)

Prvé tri z nich (groupId: artifactId: verzia) skombinujte do jedinečného identifikátora a sú mechanizmom, pomocou ktorého určíte, ktoré verzie externých knižníc (napr. JAR) bude váš projekt používať.

3.2. Závislosti

Tieto externé knižnice, ktoré projekt používa, sa nazývajú závislosti. Funkcia správy závislostí v Mavene zaisťuje automatické stiahnutie týchto knižníc z centrálneho úložiska, takže ich nemusíte ukladať lokálne.

Toto je kľúčová vlastnosť Mavenu a poskytuje nasledujúce výhody:

  • používa menej úložiska tým, že významne znižuje počet stiahnutí zo vzdialených úložísk
  • umožňuje skontrolovať projekt rýchlejšie
  • poskytuje efektívnu platformu na výmenu binárnych artefaktov vo vašej organizácii i mimo nej bez potreby zakaždým vytvárať artefakty zo zdrojov

Ak chcete deklarovať závislosť na externej knižnici, musíte uviesť groupId, artifactIda verzia knižnice. Pozrime sa na príklad:

 org.springframework pružinové jadro 4.3.5.RELEASE 

Keď Maven spracuje závislosti, stiahne knižnicu Spring Core do vášho miestneho úložiska Maven.

3.3. Úložiská

Úložisko v Mavene sa používa na uchovávanie artefaktov zostavenia a závislostí rôznych typov. Predvolené miestne úložisko sa nachádza v priečinku .m2 / úložisko priečinok v domovskom adresári používateľa.

Ak je v miestnom úložisku k dispozícii artefakt alebo doplnok, použije ho Maven. V opačnom prípade sa stiahne z centrálneho úložiska a uloží sa do miestneho úložiska. Predvolené centrálne úložisko je Maven Central.

Niektoré knižnice, napríklad server JBoss, nie sú k dispozícii v centrálnom úložisku, ale sú k dispozícii v alternatívnom úložisku. Pre tieto knižnice musíte zadať adresu URL alternatívneho úložiska vo vnútri pom.xml spis:

  Úložisko JBoss //repository.jboss.org/nexus/content/groups/public/ 

Upozorňujeme, že vo svojich projektoch môžete použiť viac úložísk.

3.4. Vlastnosti

Vlastné vlastnosti vám môžu pomôcť pri výrobe pom.xml súbor je ľahšie čitateľný a udržiavateľný. V klasickom prípade použitia by ste na definovanie verzií závislostí vášho projektu použili vlastné vlastnosti.

Vlastnosti Maven sú zástupné hodnoty a sú prístupné kdekoľvek v rámci a pom.xml pomocou notácie $ {name}, kde názov je majetok.

Pozrime sa na príklad:

 4.3.5.RELEASE org.springframework pružinové jadro $ {spring.version} org.springframework pružinový kontext $ {spring.version} 

Teraz, ak chcete aktualizovať Spring na novšiu verziu, musíte zmeniť iba hodnotu vo vnútriznačka vlastnosti a všetky závislosti, ktoré túto vlastnosť používajú v ich značky budú aktualizované.

Vlastnosti sa tiež často používajú na definovanie premenných cesty zostavenia:

 $ {project.build.directory} / tmp / // ... $ {project.resources.build.folder} // ... 

3.5. Stavať

The stavať časť je tiež veľmi dôležitou časťou Maven POM. Poskytuje informácie o predvolenom Mavene cieľ, adresár pre zostavený projekt a konečný názov aplikácie. Predvolená hodnota stavať časť vyzerá takto:

 nainštalovať $ {basedir} / target $ {artifactId} - $ {version} filtre / filter1.properties // ... 

Predvolený výstupný priečinok pre kompilované artefakty je pomenovaný cieľa konečný názov zabaleného artefaktu pozostáva z artifactId a verzia, ale môžete to kedykoľvek zmeniť.

3.6. Použitím Profily

Ďalšou dôležitou vlastnosťou Mavenu je jeho podpora pre profilov. A profilu je v podstate sada konfiguračných hodnôt. Používaním profilov, môžete prispôsobiť zostavenie pre rôzne prostredia, ako je výroba / test / vývoj:

  výroba // ... vývoj skutočný // ... 

Ako vidíte v príklade vyššie, predvolený profil je nastavený na rozvoja. Ak chcete spustiť výroba profilu, môžete použiť nasledujúci príkaz Maven:

mvn clean install -Pproduction

4. Maven zostavuje životné cykly

Každá zostava Maven nasleduje zadané životný cyklus. Môžete vykonať niekoľko zostavení životný cyklusCiele, vrátane tých, ktoré majú zostaviť kód projektu, vytvorte a balíček, a Inštalácia archívny súbor v lokálnom úložisku závislostí Maven.

4.1. Fázy životného cyklu

Nasledujúci zoznam zobrazuje najdôležitejšie Maven životný cyklus fázy:

  • potvrdiť - kontroluje správnosť projektu
  • zostaviť - zostavuje poskytnutý zdrojový kód do binárnych artefaktov
  • test - vykonáva jednotkové testy
  • balíček Balíčky skompilovaný kód do archívneho súboru
  • integračný test - vykoná ďalšie testy, ktoré si vyžadujú balenie
  • overiť - skontroluje, či je balík platný
  • Inštalácia - nainštaluje súbor balíka do lokálneho úložiska Maven
  • nasadiť - nasadí súbor balíka na vzdialený server alebo do úložiska

4.2. Pluginy a Ciele

Maven zapojiť je zbierka jedného alebo viacerých Ciele. Ciele sa vykonávajú postupne, čo pomáha určiť poradie, v akom Ciele sú vykonané.

Bohatý zoznam doplnkov, ktoré Maven oficiálne podporuje, je k dispozícii tu. Je tu tiež zaujímavý článok, ako zostaviť spustiteľný súbor JAR na Baeldung pomocou rôznych doplnkov.

Aby sme tomu lepšie porozumeli Ciele sú spustené v ktorých fázach sa štandardne pozrite na predvolený Maven životný cyklus väzby.

Ak chcete prejsť ktoroukoľvek z vyššie uvedených fáz, stačí zavolať jeden príkaz:

mvn 

Napríklad, mvn čistá inštalácia odstráni predtým vytvorené súbory jar / war / zip a skompilované triedy (čistý) a vykonajte všetky fázy potrebné na inštaláciu nového archívu (Inštalácia).

Vezmite prosím na vedomie, že Ciele poskytuje doplnky môžu byť spojené s rôznymi fázami životný cyklus.

5. Váš prvý projekt Maven

V tejto časti použijeme funkčnosť príkazového riadku Mavenu na vytvorenie projektu Java.

5.1. Generovanie jednoduchého projektu Java

Ak chcete vytvoriť jednoduchý projekt Java, spustime nasledujúci príkaz:

archív typu mvn: generate -DgroupId = org.baeldung -DartifactId = org.baeldung.java -DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = false

The groupId je parameter označujúci skupinu alebo jednotlivca, ktorí vytvorili projekt, čo je často obrátený názov domény spoločnosti. The artifactId je názov základného balíka použitý v projekte a používame štandard archetyp.

Pretože sme nezadali verziu a typ balenia, nastavia sa predvolené hodnoty - verzia sa nastaví na 1,0-SNAPSHOT, a obal bude nastavený na jar.

Ak neviete, ktoré parametre máte poskytnúť, môžete ich kedykoľvek určiť interaktívny režim=pravda, takže Maven požiada o všetky požadované parametre.

Po dokončení príkazu máme projekt Java obsahujúci App.java triedy, čo je len jednoduchý program „Hello World“, v src / main / java priečinok.

Máme tiež ukážku testovacej triedy v jazyku src / test / java. The pom.xml tohto projektu bude vyzerať podobne ako tento:

 4.0.0 org.baeldung org.baeldung.java jar 1.0-SNAPSHOT org.baeldung.java //maven.apache.org junit junit 4.1.2 test 

Ako vidíte, junit závislosť je poskytovaná štandardne.

5.2. Zostavenie a zabalenie projektu

Ďalším krokom je zostavenie projektu:

mvn zostaviť

Maven prebehne všetkými životný cyklus fázy potrebné pre zostaviť fázy na vytvorenie zdrojov projektu. Ak chcete spustiť iba test fázy, môžete použiť:

mvn test

Teraz vyvolajme balíček fáza, ktorý vyprodukuje skompilovaný archív jar spis:

balíček mvn

5.3. Vykonanie žiadosti

Nakoniec budeme realizovať náš projekt Java pomocou programu exec-maven-plugin. Poďme nakonfigurovať potrebné doplnky v pom.xml:

 src maven-compiler-plugin 3.6.1 1.8 1.8 org.codehaus.mojo exec-maven-plugin 1.5.0 org.baeldung.java.App 

Prvý doplnok, maven-compiler-plugin, je zodpovedný za kompiláciu zdrojového kódu pomocou Javy verzie 1.8. The exec-maven-plugin hľadá mainClass v našom projekte.

Na spustenie aplikácie spustíme nasledujúci príkaz:

mvn exec: java

6. Viacmodulové projekty

Mechanizmus v Mavene, ktorý spracováva viacmodulové projekty (tzv agregátor projekty) Rjedák.

The Reaktor zhromaždí všetky dostupné moduly na zostavenie, potom zoradí projekty do správneho poradia zostavenia a nakoniec ich zostaví jeden po druhom.

Pozrime sa, ako vytvoriť viacmodulový nadradený projekt.

6.1. Vytvorte nadradený projekt

V prvom rade musíme vytvoriť nadradený projekt. S cieľom vytvoriť nový projekt s názvom nadradený projekt, použijeme nasledujúci príkaz:

archív typu mvn: generate -DgroupId = org.baeldung -DartifactId = parent-project

Ďalej aktualizujeme typ balenia vo vnútri pom.xml súbor označujúci, že sa jedná o rodič modul:

pom

6.2. Vytvorte projekty podmodulov

V ďalšom kroku vytvoríme submodulárne projekty z adresára rodič-projekt:

archív typu cd rodič-projekt mvn: generate -DgroupId = org.baeldung -DartifactId = jadro mvn archetyp: generate -DgroupId = org.baeldung -DartifactId = služba mvn archetyp: generate -DgroupId = org.baeldung -DartifactId = webapp

Aby sme overili, či sme submoduly vytvorili správne, pozrieme sa na rodič-projekt pom.xml súbor, kde by sme mali vidieť tri moduly:

 základná služba webapp 

Do každého submodulu bude navyše pridaná nadradená sekcia pom.xml:

 org.baeldung parent-project 1.0-SNAPSHOT 

6.3. Povoliť správu závislostí v nadradenom projekte

Správa závislostí je mechanizmus na centralizáciu informácií o závislostiach pre multimodulový nadradený projekt a jeho podradené položky.

Ak máte sadu projektov alebo modulov, ktoré dedia spoločného rodiča, môžete vložiť všetky požadované informácie o závislostiach do spoločného pom.xml spis. To zjednoduší odkazy na artefakty v dieťati POMs.

Poďme sa pozrieť na vzorku rodičov pom.xml:

   org.springframework spring-core 4.3.5.RELEASE // ... 

Vyhlásením pružinové jadro verzia v nadradenej sieti, všetky submoduly, od ktorých závisí pružinové jadro môže deklarovať závislosť iba pomocou groupId a artifactId, a verzia sa zdedí:

  org.springframework spring-core // ... 

Ďalej môžete poskytnúť vylúčenia pre správu závislostí u rodičov pom.xml, takže konkrétne knižnice nebudú dedené podradenými modulmi:

  org.springframework jarny-kontext 

Nakoniec, ak podradený modul potrebuje použiť inú verziu spravovanej závislosti, môžete prepísať spravovanú verziu v podradenom pom.xml spis:

 org.springframework pružinové jadro 4.2.1.RELEASE 

Upozorňujeme, že zatiaľ čo podradené moduly dedia zo svojho nadradeného projektu, nadradený projekt nemusí nevyhnutne mať žiadne moduly, ktoré agreguje. Na druhej strane, materský projekt môže agregovať aj projekty, ktoré z neho nededia.

Viac informácií o dedení a agregácii nájdete v tejto dokumentácii.

6.4. Aktualizácia submodulov a zostavenie projektu

Môžeme zmeniť balenie typ každého submodulu. Poďme napríklad zmeniť balenie z webapp modul do VOJNA aktualizáciou pom.xml spis:

vojna

Teraz môžeme testovať zostavenie nášho projektu pomocou mvn čistá inštalácia príkaz. Výstup protokolov Maven by mal byť podobný tomuto:

[INFO] Skenovanie projektov ... [INFO] Poradie zostavy reaktora: [INFO] nadradený projekt [INFO] jadro [INFO] služba [INFO] webapp // ............. [ INFO] ----------------------------------------- [INFO] Zhrnutie reaktora: [ INFO] ----------------------------------------- [INFO] rodičovský projekt. ................. ÚSPECH [2,041 s] [INFO] jadro ........................ .... ÚSPECH [4,802 s] [INFO] služba ......................... ÚSPECH [3,065 s] [INFO] webapp ... ....................... ÚSPECH [6,125 s] [INFO] ------------------- ----------------------

7. Záver

V tomto článku sme diskutovali o niektorých populárnejších funkciách nástroja na zostavenie Apache Maven.

Všetky príklady kódov na Baeldungu sú zostavené pomocou Mavenu, takže môžete ľahko skontrolovať našu webovú stránku projektu GitHub a pozrieť si rôzne konfigurácie Mavenu.


$config[zx-auto] not found$config[zx-overlay] not found