Maven emballagetyper

1. Oversigt

Emballagetypen er et vigtigt aspekt af ethvert Maven-projekt. Den specificerer typen af ​​artefakt, som projektet producerer. Generelt producerer en build en krukke, krig, pomeller anden eksekverbar.

Maven tilbyder mange standardemballeringstyper og giver også fleksibilitet til at definere en brugerdefineret.

I denne vejledning tager vi et dybt dyk i Maven-emballagetyper. Først ser vi på byggecyklussen i Maven. Derefter diskuterer vi hver emballagetype, hvad de repræsenterer og deres indvirkning på projektets livscyklus. I sidste ende vil vi se, hvordan vi definerer en brugerdefineret emballagetype.

2. Standardemballeringstyper

Maven tilbyder mange standardemballeringstyper, der inkluderer en krukke, krig, øre, pom, rar, ejbog maven-plugin. Hver emballagetype følger en byggelevecyklus, der består af faser. Normalt er hver fase en sekvens af mål og udfører en bestemt opgave.

Forskellige emballagetyper kan have et andet mål i en bestemt fase. For eksempel i pakkefasen af krukke emballagetype maven-jar-plugin'S jar-mål udføres. Omvendt for en krig projekt, maven-war-plugin'S krigsmål udføres i samme fase.

2.1. krukke

Java-arkiv - eller krukke - er en af ​​de mest populære emballagetyper. Projekter med denne emballagetype producerer en komprimeret zip-fil med .krukke udvidelse. Det kan omfatte rene Java-klasser, grænseflader, ressourcer og metadatafiler.

Til at begynde med skal vi se på nogle af standard-bindingerne mål-til-bygning-fase til krukke:

  • ressourcer: ressourcer
  • kompilator: udarbejde
  • ressourcer: testRessourcer
  • kompilator: testKompilér
  • sikkerhed: prøve
  • krukke: krukke
  • installere: installere
  • indsætte: indsætte

Lad os straks definere emballagetypen på en krukke projekt:

krukke

Hvis der ikke er angivet noget, antager Maven, at emballagetypen er en krukke.

2.2. krig

Kort sagt, et webapplikationsarkiv - eller krig - indeholder alle filer, der er relateret til en webapplikation. Det kan omfatte Java-servlets, JSP'er, HTML-sider, en installationsbeskrivelse og relaterede ressourcer. Samlet set, krig har de samme målbindinger som en krukke, men med en undtagelse - pakkens fase af krig har et andet mål, hvilket er krig.

Uden tvivl, krukke og krig er de mest populære emballagetyper i Java-samfundet. En detaljeret forskel mellem disse to kan være en interessant læsning.

Lad os definere emballagetypen for en webapplikation:

krig

De andre typer emballage ejb, parog rar har også lignende livscyklusser, men hver har et andet pakkemål.

ejb:ejb eller par:par eller rar:rar

2.3. øre

Enterprise-applikationsarkiv - eller øre - er en komprimeret fil, der indeholder et J2EE-program. Den består af et eller flere moduler, der enten kan være webmoduler (pakket som en krig fil) eller EJB-moduler (pakket som en krukke fil) eller dem begge.

For at sige det anderledes, den øre er et supersæt af krukker og krige og kræver, at en applikationsserver kører applikationen, mens krig kræver kun en webcontainer eller webserver for at implementere den. De aspekter, der adskiller en webserver fra en applikationsserver, og hvad disse populære servere er i Java, er vigtige begreber for en Java-udvikler.

Lad os definere standardmålbindingerne for øre:

  • øre: generere-applikation-xml
  • ressourcer: ressourcer
  • øre: øre
  • installere: installere
  • indsætte: indsætte

Sådan kan vi definere emballagetypen for sådanne projekter:

øre

2.4. pom

Blandt alle emballagetyper, pom er den enkleste. Det hjælper med at oprette aggregatorer og overordnede projekter.

Et aggregator- eller multimodulprojekt samler undermoduler, der kommer fra forskellige kilder. Disse undermoduler er regelmæssige Maven-projekter og følger deres egen livscyklus. Aggregatoren POM har alle referencer til undermoduler under moduler element.

Et overordnet projekt giver dig mulighed for at definere arveforholdet mellem POM'er. Den overordnede POM deler visse konfigurationer, plugins og afhængigheder sammen med deres versioner. De fleste elementer fra forældrene arves af dens børn - undtagelser inkluderer artefaktId, navnog forudsætninger.

Fordi der ikke er nogen ressourcer at behandle og ingen kode at kompilere eller teste. Derfor genererer artefakter fra pom-projekter sig selv i stedet for enhver eksekverbar.

Lad os definere emballagetypen for et projekt med flere moduler:

pom

Sådanne projekter har den enkleste livscyklus, der kun består af to trin: installere og indsætte.

2.5. maven-plugin

Maven tilbyder en række nyttige plugins. Der kan dog være tilfælde, hvor standard plugins ikke er tilstrækkelige. I dette tilfælde giver værktøjet fleksibiliteten til at oprette et maven-plugin i henhold til projektets behov.

For at oprette et plugin skal du indstille projektets emballagetype:

maven-plugin

Det maven-plugin har en livscyklus svarende til krukke'S livscyklus, men med to undtagelser:

  • plugin: deskriptor er bundet til generere ressourcefasen
  • plugin: addPluginArtifactMetadata føjes til pakkefasen

For denne type projekter, a maven-plugin-api afhængighed er påkrævet.

2.6. ejb

Enterprise Java Beans - eller ejb - hjælp til at skabe skalerbare, distribuerede applikationer på serversiden. EJB'er leverer ofte en applikations forretningslogik. En typisk EJB-arkitektur består af tre komponenter: Enterprise Java Beans (EJB'er), EJB-containeren og en applikationsserver.

Lad os nu definere emballagetypen for EJB-projektet:

ejb

Det ejb emballagetype har også en lignende livscyklus som krukke emballage, men med et andet pakkemål. Pakkemålet for denne type projekter er ejb:ejb.

Projektet med ejb emballagetype, kræver en maven-ejb-plugin at udføre livscyklusmål. Maven yder support til EJB 2 og 3. Hvis der ikke er angivet en version, bruges standardversion 2.

2.7. rar

Ressourceadapter - eller rar - er en arkivfil, der fungerer som et gyldigt format til implementering af ressourceadaptere til en applikationsserver. Dybest set er det en driver på systemniveau, der forbinder en Java-applikation til et virksomhedsinformationssystem (EIS).

Her er erklæringen om emballagetype til en ressourceadapter:

rar

Hvert ressourceadapterarkiv består af to dele: a krukke fil, der indeholder kildekode og en ra.xml der fungerer som en implementeringsbeskrivelse.

Igen er livscyklusfaserne de samme som a krukke eller krig emballage med en undtagelse: Detpakke fase udfører rar mål, der består af en maven-rar-plugin at pakke arkiverne.

3. Andre typer emballage

Indtil videre har vi set på forskellige emballagetyper, som Maven tilbyder som standard. Lad os forestille os, at vi vil have vores projekt til at producere en artefakt med en .zip udvidelse. I dette tilfælde kan standardemballeringstyperne ikke hjælpe os.

Maven leverer også nogle flere emballeringstyper gennem plugins. Ved hjælp af disse plugins kan vi definere en brugerdefineret emballagetype og dens build-livscyklus. Nogle af disse typer er:

  • msi
  • omdrejningstal
  • tjære
  • tar.bz2
  • tar.gz
  • tbz
  • lynlås

For at definere en brugerdefineret type skal vi definere dens emballagetype og faser i dets livscyklus. Til dette skal du oprette en komponenter.xml fil under src / main / resources / META-INF / plexus vejviser:

 org.apache.maven.lifecycle.mapping.LifecycleMapping zip org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping org.apache.maven.plugins: maven-resources-plugin: ressourcer com.baeldung.maven.plugins: maven-zip- plugin: zip org.apache.maven.plugins: maven-install-plugin: install org.apache.maven.plugins: maven-deploy-plugin: implementer 

Indtil nu ved Maven ikke noget om vores nye emballagetype og dens livscyklus. For at gøre det synligt, lad os tilføje pluginet i pom projektfil og indstilles udvidelser til rigtigt:

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

Nu vil projektet være tilgængeligt for en scanning, og systemet vil undersøge det plugins og compnenets.xml fil også.

Bortset fra alle disse typer tilbyder Maven mange andre emballagetyper gennem eksterne projekter og plugins. For eksempel, nar (oprindeligt arkiv), swfog swc er emballagetyper til de projekter, der producerer Adobe Flash og Flex-indhold. Til sådanne projekter har vi brug for et plugin, der definerer brugerdefineret emballage og et lager, der indeholder pluginet.

4. Konklusion

I denne artikel kiggede vi på forskellige emballeringstyper, der er tilgængelige i Maven. Vi blev også fortrolige med, hvad disse typer repræsenterer, og hvordan de adskiller sig i deres livscyklus. I sidste ende lærte vi også, hvordan man definerer en brugerdefineret emballagetype og tilpasser standardbygningens livscyklus.

Alle kodeeksempler på Baeldung er bygget ved hjælp af Maven. Sørg for at tjekke vores forskellige Maven-konfigurationer over 0n GitHub.


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