Több modulos projekt Maven-nel

1. Áttekintés

Ebben az oktatóanyagban bemutatjuk, hogyan lehet több modulból álló projektet felépíteni a Maven alkalmazással.

Először megvitatjuk, mi a több modulos projekt, és megvizsgáljuk a megközelítés követésének előnyeit. Ezután elkészítjük a mintaprojektünket. A Maven bemutatásához nézze meg ezt az oktatóanyagot.

2. Maven több modulos projektje

A több modulból álló projekt egy aggregátor POM-ból épül fel, amely almodulok csoportját kezeli. A legtöbb esetben az összesítő a projekt gyökérkönyvtárában található, és típusú csomagolással kell rendelkeznie pom.

Az almodulok rendszeres Maven projektek, és külön-külön, vagy az összesítő POM segítségével építhetők fel.

A projektet az összesítő POM-on keresztül építve minden olyan projekt, amelynek csomagolási típusa eltér a pom beépített archív fájlt eredményez.

3. A multi-modulok használatának előnyei

A megközelítés alkalmazásának jelentős előnye az csökkenthetjük a duplikációt.

Tegyük fel, hogy van egy alkalmazásunk, amely több modulból áll, legyen ez egy elülső és egy háttérmodul. Most mindkettőjükön dolgozunk, és megváltoztatjuk a funkcionalitást, amely hatással van a kettőre. Ebben az esetben egy speciális buildeszköz nélkül mindkét komponenst külön-külön kell felépítenünk, vagy írnunk kell egy szkriptet, amely összeállítja a kódot, futtatja a teszteket és megmutatja az eredményeket. Aztán, miután még több modult kapunk a projektben, nehezebb lesz kezelni és fenntartani.

Ezenkívül a valós világban a projekteknek szükségük lehet bizonyos Maven beépülő modulokra, hogy különféle műveleteket hajtsanak végre az építkezés életciklusa alatt, megosszák a függőségeket és profilokat, vagy más BOM-projekteket tartalmazzanak.

Ezért a multi-modulok kihasználásakor megtehetjük az alkalmazás moduljait egyetlen parancsban készítheti el és ha a sorrend számít, Maven ezt kitalálja nekünk. Azt is megtehetjük hatalmas mennyiségű konfigurációt oszt meg más modulokkal.

4. Szülő POM

Maven úgy támogatja az öröklést, hogy az minden pom.xml fájl rendelkezik implicit szülő POM-val, Super POM-nak hívják és a Maven bináris fájlokban helyezhető el. Ezt a két fájlt Maven egyesíti és az Effective POM-ot alkotja.

Ezért létrehozhatjuk a sajátunkat saját pom.xml fájlt, amely szülő projektként szolgál majd nekünk. Ezután felvehetjük az összes konfigurációt függőségekkel együtt, és beállíthatjuk ezt gyermekmoduljaink szülőjeként, így ők örökölnek belőle.

Az öröklés mellett Maven adja meg az összesítés fogalmát. Ezt a funkciót kihasználó szülő POM-ot összesített POM-nak nevezzük. Alapvetően ez a fajta POM kifejezetten deklarálja moduljait a pom.xml fájljában.

5. Részmodulok

Az almodulok vagy alprojektek rendszeres Maven projektek, amelyek a szülő POM-tól öröklődnek. Mint már tudjuk, az öröklés megosztja a konfigurációt és a függőségeket az almodulokkal. Ha azonban egy pillanat alatt szeretnénk elkészíteni vagy kiadni a projektünket, akkor a szülő POM-ban kifejezetten deklarálnunk kell almoduljainkat. Végül a szülő POM lesz a szülő, valamint az összesített POM.

6. Az alkalmazás kiépítése

Most, hogy megértettük Maven almoduljait és hierarchiáját, készítsünk egy minta alkalmazást ezek bemutatására. A projektek előállításához a Maven parancssori felületét használjuk.

Ez az alkalmazás három modulból áll, amelyek a következőket fogják képviselni:

  • A mag domainünk része
  • Egy web szolgáltatás néhány REST API-t biztosít
  • A webapp felhasználó felé fordított valamilyen webes eszközöket tartalmaz

Mivel Mavenre fogunk összpontosítani, ezeknek a szolgáltatásoknak a megvalósítása továbbra is meghatározatlan marad.

6.1. Szülő POM generálása

Először hozzunk létre egy szülő projektet:

mvn archetípus: generál -DgroupId = org.baeldung -DartifactId = szülő-projekt

A szülő létrehozása után meg kell nyitnunk a pom.xml fájlt a szülő könyvtárában, és cserélje ki a csomagolást pom-ra.

pom

A csomagolás pom típusra állításával kijelentjük, hogy a projekt szülőként vagy összesítőként fog szolgálni - nem hoz létre további tárgyakat.

Most, amikor az összesítőnk elkészült, létrehozhatjuk almoduljainkat.

Meg kell azonban jegyeznünk, hogy ez az a hely, ahol az összes megosztandó konfiguráció megtalálható, és végül újra felhasználható a gyermekmodulokban. Többek között felhasználhatjuk függőségMenedzsment vagy pluginManagement itt.

6.2. Részmodulok létrehozása

Ahogy a szülőnket POM-nak nevezték el szülő-projekt, meg kell győződnünk arról, hogy a szülő könyvtárában vagyunk-e és futtatunk generál parancsok:

cd szülőprojekt mvn archetípus: -DgroupId = org.baeldung -DartifactId = mag mvn archetípus: -DgroupId = org.baeldung -DartifactId = szolgáltatás mvn archetípus: -DgroupId = org.baeldung -DartifactId = webapp

Figyelje meg a használt parancsot. Ugyanaz, mint a szülőnél. A helyzet az, hogy ezek a modulok rendszeres Maven projektek, mégis Maven felismerte, hogy be vannak ágyazva. Amikor megváltoztattuk a könyvtárat a szülő-projekt, megállapította, hogy a szülőnek van típusú csomagolása pom és módosította mindkettőt pom.xml fájlokat ennek megfelelően.

Ezt követően Maven három almodult generál, és módosít nekünk a szülőnek pom.xml fájl néhány címke hozzáadásával:

 alapszolgáltatás webapp 

Most szülőnk kifejezetten deklarálja az összesített modulokat.

Ezután futáskor mvn csomag parancsot a szülőprojekt könyvtárban, a Maven felépíti és teszteli mindhárom modult.

Ezenkívül a Maven Reactor elemzi projektünket és megfelelő sorrendben felépíti. Tehát, ha a mi webapp modul függ a szolgáltatás modult, Maven előbb elkészíti a szolgáltatás, aztán a webapp.

Végül is, ha meg akarjuk osztani az összes konfigurációt az almoduljainkkal, azokban pom.xml fájlokat, be kell jelentenünk a szülőt:

 org.baeldung szülőprojekt 1.0-SNAPSHOT 

Meg kell jegyeznünk, hogy az almoduloknak csak egy szülője lehet. Ugyanakkor sok BOM-ot importálhatunk. A BOM fájlokról további részletek találhatók ebben a cikkben.

6.3. A projekt építése

Most mindhárom modult egyszerre felépíthetjük. A szülő projektkönyvtárában futtassa:

mvn csomag

Ez felépíti az összes modult, látnunk kell a parancs következő kimenetét:

[INFO] Projektek keresése ... [INFO] -------------------------------------- ---------------------------------- [INFO] Reaktorépítési sorrend: [INFO] szülőprojekt [INFO] mag [INFO] szolgáltatás [INFO] webalkalmazás ... [INFO] Reaktor összefoglaló: [INFO] szülő-projekt .......................... ........... SIKER [0.140 s] [INFO] mag .............................. ................. SIKER [2.195 s] [INFO] szolgáltatás ........................ .................... SIKER [0,767 s] [INFO] webalkalmazás ..................... ........................ SIKER [0,572 s] [INFO] ------------------ -------------------------------------------------- ---- [INFO] SIKER ÉPÍTÉSE [INFO] -------------------------------------- ----------------------------------

A Reaktor felsorolja a szülő-projekt, de ahogy van pom írja be, hogy kizárt, és az összeállítás három külön-külön eredményez .befőttes üveg fájlok az összes többi modulhoz. Ebben az esetben az építés három esetben fordul elő.

7. Következtetés

Ebben az oktatóanyagban megvitattuk a Maven több modul használatának előnyeit. Ezenkívül megkülönböztettük a szokásos Maven szülő POM-ját és az aggregált POM-ot. Végül megmutattuk, hogyan állítsunk be egy egyszerű multi-modult, amellyel elkezdhetünk játszani.

A Maven nagyszerű eszköz, de önmagában is összetett. Ha további részleteket szeretne megtudni a Mavenről, nézze meg a Sonatype Maven referenciáját vagy az Apache Maven útmutatókat. Ha a Maven multimodulok speciális használatát keresi, nézze meg, hogy a Spring Boot projekt miként használja fel annak használatát.

A Baeldung összes kódpéldája a Maven használatával készült, így könnyedén megnézheti a GitHub projekt webhelyét a különböző Maven konfigurációk megtekintéséhez.