Maven csomagolási típusok

1. Áttekintés

A csomagolás típusa fontos szempont minden Maven-projektnél. Megadja a projekt által előállított tárgy típusát. Általában egy építés a befőttes üveg, háború, pom, vagy más futtatható.

A Maven sok alapértelmezett csomagolási típust kínál, és rugalmasságot kínál egyedi csomagolás meghatározásához is.

Ebben az oktatóanyagban mélyen elmélyülünk a Maven csomagolási típusaiban. Először megvizsgáljuk Maven életciklusait. Ezután megbeszéljük az egyes csomagolási típusokat, mit képviselnek, és azok hatását a projekt életciklusára. A végén meglátjuk, hogyan definiálható az egyedi csomagolási típus.

2. Alapértelmezett csomagolási típusok

A Maven számos alapértelmezett csomagolási típust kínál, amelyek tartalmazzák a befőttes üveg, háború, fül, pom, rar, ejb, és maven-plugin. Minden csomagolási típus egy gyártási életciklust követ, amely szakaszokból áll. Általában minden szakasz egy célsorozat, és egy adott feladatot hajt végre.

A különböző csomagolási típusoknak eltérő célja lehet egy adott szakaszban. Például a csomag csomagjában befőttes üveg csomagolás típusa, maven-jar-plugin’S jar célja teljesül. Fordítva, a háború projekt, maven-war-pluginHáborús célját ugyanabban a szakaszban hajtják végre.

2.1. befőttes üveg

Java archívum - vagy befőttes üveg - az egyik legnépszerűbb csomagolási típus. Az ilyen csomagolási típusú projektek tömörített zip fájlt készítenek a .befőttes üveg kiterjesztés. Tartalmazhat tiszta Java osztályokat, interfészeket, erőforrásokat és metaadat fájlokat.

Először is nézzünk meg néhányat az alapértelmezett cél-építés-fázis kötések közül befőttes üveg:

  • erőforrások: erőforrások
  • fordítóprogram: összeállítani
  • erőforrások: testResources
  • fordítóprogram: testCompile
  • holtbiztos: teszt
  • befőttes üveg: befőttes üveg
  • telepítés: telepítés
  • bevetni: bevetni

Haladéktalanul határozzuk meg az a csomagolási típusát befőttes üveg projekt:

befőttes üveg

Ha semmit nem határoztak meg, Maven feltételezi, hogy a csomagolás típusa a befőttes üveg.

2.2. háború

Egyszerűen fogalmazva, egy webalkalmazás-archívum - vagy háború - tartalmazza az összes webalkalmazással kapcsolatos fájlt. Tartalmazhat Java szervleteket, JSP-ket, HTML oldalakat, telepítési leírót és kapcsolódó erőforrásokat. Átfogó, háború ugyanazokkal a célkötésekkel rendelkezik, mint a befőttes üveg, de egy kivétellel - a csomag fázisa háború más célja van, ami háború.

Kétséget kizáróan, befőttes üveg és háború a legnépszerűbb csomagolási típusok a Java közösségben. A kettő közötti részletes különbség érdekes olvasmány lehet.

Határozzuk meg egy webalkalmazás csomagolási típusát:

háború

A többi csomagolási típus ejb, par, és rar hasonló életciklusuk van, de mindegyiknek más a csomagcélja.

ejb:ejb vagy par:par vagy rar:rar

2.3. fül

Vállalati alkalmazásarchívum - vagy fül - egy tömörített fájl, amely J2EE alkalmazást tartalmaz. Egy vagy több modulból áll, amelyek lehetnek webmodulok (a-ként csomagolva) háború fájl) vagy EJB modulok (a-ként csomagolva) befőttes üveg fájl) vagy mindkettőjüket.

Másképp fogalmazva, a fül a szuperhalmaza üvegek és háborúk és alkalmazáskiszolgálóra van szükség az alkalmazás futtatásához, míg háború telepítéséhez csak webtárolóra vagy webszerverre van szükség. Azok a szempontok, amelyek megkülönböztetik a webkiszolgálót az alkalmazáskiszolgálótól, és hogy ezek a népszerű szerverek a Java-ban vannak, fontos fogalmak a Java-fejlesztők számára.

Határozzuk meg az alapértelmezett célkötéseket a fül:

  • fül: generál-alkalmazás-xml
  • erőforrások: erőforrások
  • fül: fül
  • telepítés: telepítés
  • bevetni: bevetni

Így határozhatjuk meg az ilyen projektek csomagolási típusát:

fül

2.4. pom

Az összes csomagolási típus közül pom a legegyszerűbb. Segít aggregátorok és szülőprojektek létrehozásában.

Egy összesítő vagy több modulból álló projekt különböző forrásokból származó részmodulokat állít össze. Ezek az almodulok rendszeres Maven projektek, és saját építésük életciklusát követik. A POM összesítő a submodulok összes hivatkozását a modulok elem.

A szülőprojekt lehetővé teszi a POM-ok közötti öröklési kapcsolat meghatározását. A szülő POM bizonyos konfigurációkat, bővítményeket és függőségeket oszt meg a verzióikkal együtt. A szülő legtöbb elemét a gyermekei örökölik - a kivételek közé tartozik artefactId, név, és előfeltételek.

Mivel nincsenek feldolgozandó erőforrások és nincs kód fordításra vagy tesztelésre. Ennélfogva a pom projektek leletei önmagukat generálják minden futtatható fájl helyett.

Határozzuk meg egy több modulos projekt csomagolási típusát:

pom

Az ilyen projektek életciklusa a legegyszerűbb, és csak két lépésből áll: telepítés és bevetni.

2.5. maven-plugin

A Maven számos hasznos plugint kínál. Vannak azonban esetek, amikor az alapértelmezett beépülő modulok nem elégségesek. Ebben az esetben az eszköz rugalmasságot biztosít a maven-plugin létrehozásához, a projekt igényeinek megfelelően.

Bővítmény létrehozásához állítsa be a projekt csomagolási típusát:

maven-plugin

A maven-plugin életciklusa hasonló befőttes üvegÉletciklusát, de két kivétellel:

  • csatlakoztat: leíró az erőforrások generálása szakaszhoz van kötve
  • csatlakoztat: addPluginArtifactMetadata hozzáadódik a csomag fázisához

Az ilyen típusú projekteknél a maven-plugin-api függőség szükséges.

2.6. ejb

Vállalati Java bab - vagy ejb - segítség skálázható, elosztott szerveroldali alkalmazások létrehozásában. Az EJB-k gyakran biztosítják az alkalmazások üzleti logikáját. A tipikus EJB architektúra három összetevőből áll: Enterprise Java Beans (EJB), az EJB tárolóból és egy alkalmazásszerverből.

Most határozzuk meg az EJB projekt csomagolási típusát:

ejb

A ejb a csomagolás típusának is hasonló az életciklusa, mint a befőttes üveg csomagolás, de más csomagolási céllal. Az ilyen típusú projektek csomagcélja az ejb:ejb.

A projekt, a ejb csomagolási típus, megköveteli a maven-ejb-plugin életciklus-célok megvalósítására. A Maven támogatást nyújt az EJB 2 és 3 számára. Ha nincs megadva verzió, akkor az alapértelmezett 2-es verziót használja.

2.7. rar

Erőforrás-illesztő - vagy rar - egy archív fájl, amely érvényes formátumként szolgál az erőforrás-illesztők alkalmazáskiszolgálóra történő telepítéséhez. Alapvetően ez egy rendszerszintű illesztőprogram, amely összeköti a Java alkalmazást a vállalati információs rendszerrel (EIS).

Az erőforrás-adapter csomagolási típusának nyilatkozata:

rar

Minden erőforrás-illesztő archívum két részből áll: a befőttes üveg fájl, amely forráskódot és a ra.xml amely a telepítés leírásaként szolgál.

Ismét az életciklus fázisai megegyeznek a befőttes üveg vagy háború csomagolás egy kivétellel: Acsomag fázis végrehajtja a rar cél, amely a maven-rar-plugin az irattár csomagolására.

3. Egyéb csomagolási típusok

Eddig különféle csomagolási típusokat vizsgáltunk, amelyeket a Maven alapértelmezés szerint kínál. Képzeljük el, hogy azt akarjuk, hogy projektünk műtárgyat hozzon létre a-val .postai irányítószám kiterjesztés. Ebben az esetben az alapértelmezett csomagolási típusok nem tudnak segíteni rajtunk.

A Maven plugineken keresztül kínál még néhány csomagolási típust. Ezeknek a bővítményeknek a segítségével meghatározhatunk egy egyedi csomagolási típust és felépítésének életciklusát. Néhány ilyen típus:

  • msi
  • fordulat
  • kátrány
  • tar.bz2
  • tar.gz
  • tbz
  • postai irányítószám

Egyéni típus definiálásához meg kell határoznunk azt csomagolástípus és fázisok életciklusában. Ehhez hozzon létre egy components.xml fájl a src / main / resources / META-INF / plexus Könyvtár:

 org.apache.maven.lifecycle.mapping.LifecycleMapping zip plugin: zip org.apache.maven.plugins: maven-install-plugin: install org.apache.maven.plugins: maven-deploy-plugin: deploy 

Eddig a Maven nem tud semmit az új csomagolási típusunkról és annak életciklusáról. Láthatóvá tételéhez adjuk hozzá a bővítményt a pom fájl a projekt és a készlet kiterjesztések nak nek igaz:

  com.baeldung.maven.plugins maven-zip-plugin true 

Most a projekt ellenőrizhető lesz, és a rendszer megvizsgálja bővítmények és compnenets.xml fájl is.

Ezeken a típusokon kívül a Maven rengeteg más csomagolási típust kínál külső projekteken és beépülő modulokon keresztül. Például, nar (natív archívum), swf, és swc az Adobe Flash és Flex tartalmat előállító projektek csomagolási típusai. Az ilyen projektekhez szükségünk van egy beépülő modulra, amely meghatározza az egyedi csomagolást, és egy tárolóra, amely tartalmazza a bővítményt.

4. Következtetés

Ebben a cikkben a Maven-ben kapható különféle csomagolási típusokat vizsgáltuk. Ezenkívül megismerhettük, mit jelentenek ezek a típusok, és miben különböznek életciklusukban. Végül azt is megtanultuk, hogyan definiálhatunk egyedi csomagolási típust és hogyan szabhatjuk meg az alapértelmezett összeállítás életciklusát.

A Baeldung összes kódpéldája Maven használatával készült. Ügyeljen arra, hogy ellenőrizze a különböző Maven konfigurációinkat a 0n GitHubon keresztül.