Maven emballasjetyper

1. Oversikt

Emballasjetypen er et viktig aspekt av ethvert Maven-prosjekt. Den spesifiserer typen gjenstand prosjektet produserer. Generelt produserer en bygning en krukke, krig, pomeller annen kjørbar.

Maven tilbyr mange standard emballasjetyper og gir også fleksibilitet til å definere en tilpasset.

I denne opplæringen tar vi et dypdykk i Maven-emballasjetyper. Først skal vi se på livssyklusene i Maven. Deretter vil vi diskutere hver emballasjetype, hva de representerer og deres innvirkning på prosjektets livssyklus. Til slutt vil vi se hvordan vi definerer en tilpasset emballasjetype.

2. Standard emballasjetyper

Maven tilbyr mange standard emballasjetyper som inkluderer en krukke, krig, øre, pom, rar, ejb, og maven-plugin. Hver emballasjetype følger en byggesyklus som består av faser. Vanligvis er hver fase en sekvens av mål og utfører en bestemt oppgave.

Ulike emballasjetyper kan ha et annet mål i en bestemt fase. For eksempel i pakkefasen av krukke emballasjetype, maven-jar-plugin‘S jar mål blir utført. Motsatt, for en krig prosjekt, maven-war-plugin‘S krigsmål blir utført i samme fase.

2.1. krukke

Java-arkiv - eller krukke - er en av de mest populære emballasjetyper. Prosjekter med denne emballasjetypen produserer en komprimert zip-fil med .krukke Utvidelse. Det kan omfatte rene Java-klasser, grensesnitt, ressurser og metadatafiler.

Til å begynne med, la oss se på noen av standard-bindingsfasebindinger for krukke:

  • ressurser: ressurser
  • kompilator: kompilere
  • ressurser: testRessurser
  • kompilator: testKompilere
  • surefire: test
  • krukke: krukke
  • installere: installere
  • utplassere: utplassere

Uten forsinkelse, la oss definere emballasjetypen til en krukke prosjekt:

krukke

Hvis ingenting er spesifisert, antar Maven at emballasjetypen er en krukke.

2.2. krig

Enkelt sagt, et webapplikasjonsarkiv - eller krig - inneholder alle filer relatert til et webapplikasjon. Det kan omfatte Java-servlets, JSPer, HTML-sider, en distribusjonsbeskrivelse og relaterte ressurser. Alt i alt, krig har samme målbindinger som en krukke, men med ett unntak - pakkefasen av krig har et annet mål, som er krig.

Uten tvil, krukke og krig er de mest populære emballasjetyper i Java-samfunnet. En detaljert forskjell mellom disse to kan være interessant å lese.

La oss definere emballasjetypen til en webapplikasjon:

krig

De andre emballasjetyper ejb, par, og rar har også lignende livssykluser, men hver har et annet pakkemål.

ejb:ejb eller par:par eller rar:rar

2.3. øre

Enterprise-applikasjonsarkiv - eller øre - er en komprimert fil som inneholder et J2EE-program. Den består av en eller flere moduler som enten kan være nettmoduler (pakket som en krig fil) eller EJB-moduler (pakket som en krukke fil) eller begge deler.

For å si det annerledes, den øre er et supersett av krukker og kriger og krever en applikasjonsserver for å kjøre applikasjonen, mens krig krever bare en webcontainer eller webserver for å distribuere den. Aspektene som skiller en webserver fra en applikasjonsserver, og hva de populære serverne er i Java, er viktige konsepter for en Java-utvikler.

La oss definere standard målbindinger for øre:

  • øre: generere-applikasjon-xml
  • ressurser: ressurser
  • øre: øre
  • installere: installere
  • utplassere: utplassere

Slik kan vi definere emballasjetypen til slike prosjekter:

øre

2.4. pom

Blant alle emballasjetyper, pom er den enkleste. Det hjelper til med å lage aggregatorer og foreldreprosjekter.

Et aggregator- eller multimodulprosjekt samler delmoduler som kommer fra forskjellige kilder. Disse submodulene er vanlige Maven-prosjekter og følger sine egne livssykluser. Aggregatoren POM har alle referanser til undermoduler under moduler element.

Et overordnet prosjekt lar deg definere arveforholdet mellom POM-er. Den overordnede POM deler visse konfigurasjoner, plugins og avhengigheter, sammen med sine versjoner. De fleste elementene fra foreldrene arves av barna sine - unntak inkluderer artefaktId, Navn, og forutsetninger.

Fordi det ikke er ressurser å behandle og ingen kode å kompilere eller teste. Derfor genererer gjenstandene til pom-prosjekter seg selv i stedet for noen kjørbar.

La oss definere emballasjetypen til et multimodulprosjekt:

pom

Slike prosjekter har den enkleste livssyklusen som bare består av to trinn: installere og utplassere.

2.5. maven-plugin

Maven tilbyr en rekke nyttige plugins. Imidlertid kan det være tilfeller når standard plugins ikke er tilstrekkelig nok. I dette tilfellet gir verktøyet fleksibilitet til å opprette en maven-plugin, i henhold til prosjektets behov.

For å lage et plugin, angir du emballasjetypen til prosjektet:

maven-plugin

De maven-plugin har en livssyklus som ligner på krukkeLivssyklus, men med to unntak:

  • plugg inn: deskriptor er bundet til generere ressursfasen
  • plugg inn: addPluginArtifactMetadata blir lagt til pakkefasen

For denne typen prosjekter, a maven-plugin-api avhengighet er nødvendig.

2.6. ejb

Enterprise Java Beans - eller ejb - bidra til å lage skalerbare, distribuerte applikasjoner på serversiden. EJB gir ofte forretningslogikken til en applikasjon. En typisk EJB-arkitektur består av tre komponenter: Enterprise Java Beans (EJBs), EJB-containeren og en applikasjonsserver.

La oss nå definere emballasjetypen til EJB-prosjektet:

ejb

De ejb emballasjetype har også en lignende livssyklus som krukke emballasje, men med et annet pakkemål. Pakkemålet for denne typen prosjekter er ejb:ejb.

Prosjektet, med ejb emballasjetype, krever en maven-ejb-plugin å utføre livssyklusmål. Maven gir støtte for EJB 2 og 3. Hvis ingen versjon er spesifisert, brukes standard versjon 2.

2.7. rar

Ressursadapter - eller rar - er en arkivfil som fungerer som et gyldig format for distribusjon av ressurskort til en applikasjonsserver. I utgangspunktet er det en driver på systemnivå som kobler et Java-program til et enterprise information system (EIS).

Her er erklæringen om emballasjetype for en ressursadapter:

rar

Hvert ressursadapterarkiv består av to deler: a krukke fil som inneholder kildekode og en ra.xml som fungerer som en distribusjonsbeskrivelse.

Igjen er livssyklusfasene de samme som a krukke eller krig emballasje med ett unntak: Depakke fase utfører rar mål som består av en maven-rar-plugin å pakke arkivene.

3. Andre emballasjetyper

Så langt har vi sett på ulike emballasjetyper som Maven tilbyr som standard. La oss forestille oss at vi vil at prosjektet vårt skal produsere en gjenstand med en .glidelås Utvidelse. I dette tilfellet kan ikke standardemballasjetyper hjelpe oss.

Maven tilbyr også noen flere emballasjetyper gjennom plugins. Ved hjelp av disse programtilleggene kan vi definere en tilpasset emballasjetype og dens livssyklus. Noen av disse typene er:

  • msi
  • rpm
  • tjære
  • tar.bz2
  • tar.gz
  • tbz
  • glidelås

For å definere en tilpasset type, må vi definere dens emballasjetype og faser i livssyklusen. For dette lager du en komponenter.xml filen under src / main / resources / META-INF / plexus katalog:

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

Inntil nå vet Maven ikke noe om den nye emballasjetypen og livssyklusen. For å gjøre det synlig, la oss legge til pluginet i pom fil av prosjektet og sett utvidelser til ekte:

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

Nå vil prosjektet være tilgjengelig for skanning, og systemet vil se nærmere på plugins og compnenets.xml fil også.

Annet enn alle disse typene, tilbyr Maven mange andre emballasjetyper gjennom eksterne prosjekter og plugins. For eksempel, nar (innfødt arkiv), swf, og swc er emballasjetyper for prosjektene som produserer Adobe Flash og Flex-innhold. For slike prosjekter trenger vi et plugin som definerer tilpasset emballasje og et depot som inneholder plugin.

4. Konklusjon

I denne artikkelen så vi på forskjellige emballasjetyper som er tilgjengelige i Maven. Vi ble også kjent med hva disse typene representerer og hvordan de varierer i livssyklusen. Til slutt lærte vi også hvordan vi definerer en tilpasset emballasjetype og tilpasser standard byggesyklus.

Alle kodeeksempler på Baeldung er bygget med Maven. Husk å sjekke ut de forskjellige Maven-konfigurasjonene våre over 0n GitHub.


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