Vrste pakiranja Maven

1. Pregled

Vrsta pakiranja važan je aspekt svakog Mavenova projekta. Određuje vrstu artefakta koji projekt proizvodi. Općenito, gradnja proizvodi a staklenka, rat, pomili druga izvršna datoteka.

Maven nudi mnoge zadane vrste pakiranja, a također pruža fleksibilnost u definiranju prilagođenog pakiranja.

U ovom uputstvu duboko ćemo zaroniti u vrste pakiranja Maven. Prvo ćemo pogledati cikluse izrade u Mavenu. Zatim ćemo razgovarati o svakoj vrsti ambalaže, o tome što predstavljaju i o njihovom utjecaju na životni ciklus projekta. Na kraju ćemo vidjeti kako definirati prilagođenu vrstu pakiranja.

2. Zadane vrste pakiranja

Maven nudi mnoge zadane vrste pakiranja koje uključuju a staklenka, rat, uho, pom, rar, ejb, i maven-dodatak. Svaka vrsta pakiranja slijedi životni ciklus izrade koji se sastoji od faza. Obično je svaka faza slijed ciljeva i izvršava određeni zadatak.

Različite vrste pakiranja mogu imati različit cilj u određenoj fazi. Na primjer, u fazi pakiranja staklenka vrsta pakiranja, maven-jar-plugin'S jar cilj se izvršava. Suprotno tome, za a rat projekt, maven-war-plugin'Ratni cilj se izvršava u istoj fazi.

2.1. staklenka

Java arhiva - ili staklenka - jedna je od najpopularnijih vrsta pakiranja. Projekti s ovom vrstom pakiranja proizvode komprimiranu zip datoteku s .jar produženje. Može obuhvaćati čiste Java klase, sučelja, resurse i datoteke metapodataka.

Za početak, pogledajmo neke od zadanih veza faze cilja za izgradnju za staklenka:

  • resursi: resursi
  • sastavljač: sastaviti
  • resursi: testResources
  • sastavljač: testSastaviti
  • pouzdan: test
  • tegla: staklenka
  • instalirati: instalirati
  • rasporediti: rasporediti

Bez odgađanja definirajmo vrstu pakiranja a staklenka projekt:

staklenka

Ako ništa nije navedeno, Maven pretpostavlja da je vrsta pakiranja a staklenka.

2.2. rat

Jednostavno rečeno, arhiva web aplikacija - ili rat - sadrži sve datoteke povezane s web aplikacijom. To može uključivati ​​Java servlete, JSP-ove, HTML stranice, deskriptor implementacije i povezane resurse. Sve u svemu, rat ima iste vezne ciljeve kao i staklenka, ali uz jednu iznimku - fazu paketa rat ima drugačiji cilj, koji je rat.

Bez sumnje, staklenka i rat su najpopularnije vrste pakiranja u Java zajednici. Detaljna razlika između njih dvoje mogla bi biti zanimljivo štivo.

Definirajmo vrstu pakiranja web aplikacije:

rat

Ostale vrste pakiranja ejb, par, i rar također imaju slične životne cikluse, ali svaki ima drugačiji cilj paketa.

ejb:ejb ili par:par ili rar:rar

2.3. uho

Arhiva poslovnih aplikacija - ili uho - je komprimirana datoteka koja sadrži J2EE aplikaciju. Sastoji se od jednog ili više modula koji mogu biti ili web moduli (pakirani kao rat datoteka) ili EJB moduli (pakirani kao staklenka datoteka) ili obojica.

Drugim riječima, uho je superskupina staklenke i ratovi i zahtijeva poslužitelj aplikacija za pokretanje aplikacije, dok rat zahtijeva samo web spremnik ili web poslužitelj za njegovo postavljanje. Aspekti koji razlikuju web poslužitelj od poslužitelja aplikacija i koji su to popularni poslužitelji na Javi važni su pojmovi za razvojnog programera Java.

Definirajmo zadane veze za ciljeve za uho:

  • uho: generiraj-aplikaciju-xml
  • resursi: resursi
  • uho: uho
  • instalirati: instalirati
  • rasporediti: rasporediti

Evo kako možemo definirati vrstu pakiranja takvih projekata:

uho

2.4. pom

Među svim vrstama pakiranja, pom je najjednostavniji. Pomaže u stvaranju agregatora i nadređenih projekata.

Projekt agregatora ili više modula okuplja podmodule koji dolaze iz različitih izvora. Ti su podmoduli redovni Mavenovi projekti i slijede vlastite životne cikluse. Agregator POM ima sve reference podmodula pod modula element.

Nadređeni projekt omogućuje vam definiranje odnosa nasljeđivanja između POM-ova. Nadređeni POM dijeli određene konfiguracije, dodatke i ovisnosti, zajedno s njihovim verzijama. Većinu elemenata od roditelja nasljeđuju njegova djeca - iznimke uključuju artefaktId, Ime, i preduvjeti.

Budući da nema resursa za obradu i koda za kompajliranje ili testiranje. Dakle, artefakti pom projekata generiraju se umjesto bilo koje izvršne datoteke.

Definirajmo vrstu pakiranja višemodulnog projekta:

pom

Takvi projekti imaju najjednostavniji životni ciklus koji se sastoji od samo dva koraka: instalirati i rasporediti.

2.5. maven-dodatak

Maven nudi razne korisne dodatke. Međutim, mogu biti slučajevi kada zadani dodaci nisu dovoljni. U ovom slučaju, alat pruža fleksibilnost za stvaranje dodatka maven, u skladu s potrebama projekta.

Da biste stvorili dodatak, postavite vrstu pakiranja projekta:

maven-dodatak

The maven-dodatak ima životni ciklus sličan staklenkaŽivotni ciklus, ali uz dvije iznimke:

  • uključiti: deskriptor vezan je za fazu generiranja resursa
  • uključiti: addPluginArtifactMetadata dodaje se u fazu paketa

Za ovu vrstu projekta, a maven-plugin-api potrebna je ovisnost.

2.6. ejb

Enterprise Java Beans - ili ejb - pomoć u stvaranju skalabilnih, distribuiranih aplikacija na strani poslužitelja. EJB-ovi često pružaju poslovnu logiku aplikacije. Tipična EJB arhitektura sastoji se od tri komponente: Enterprise Java Beans (EJB), spremnika EJB i poslužitelja aplikacija.

Sada, definirajmo vrstu pakiranja EJB projekta:

ejb

The ejb vrsta ambalaže također ima sličan životni ciklus kao staklenka pakiranje, ali s drugim ciljem paketa. Cilj paketa za ovu vrstu projekta je ejb:ejb.

Projekt, sa ejb vrsta pakiranja, zahtijeva a maven-ejb-dodatak za izvršavanje ciljeva životnog ciklusa. Maven pruža podršku za EJB 2 i 3. Ako nije navedena nijedna verzija, tada se koristi zadana verzija 2.

2.7. rar

Prilagodnik resursa - ili rar - je arhivska datoteka koja služi kao važeći format za postavljanje adaptera resursa na aplikacijski poslužitelj. U osnovi je riječ o pokretačkom programu na razini sustava koji povezuje Java aplikaciju s poslovnim informacijskim sustavom (EIS).

Evo izjave o vrsti pakiranja za adapter za resurse:

rar

Svaka arhiva prilagodnika resursa sastoji se od dva dijela: a staklenka datoteka koja sadrži izvorni kod i ra.xml koji služi kao deskriptor implementacije.

Opet, faze životnog ciklusa iste su kao i staklenka ili rat pakiranje s jednom iznimkom: Thepaket faza izvršava rar cilj koji se sastoji od a maven-rar-dodatak spakirati arhive.

3. Ostale vrste pakiranja

Do sada smo različite vrste pakiranja koje Maven nudi gledali kao zadane. Zamislimo sada da želimo da naš projekt proizvede artefakt s a .zip produženje. U ovom nam slučaju zadane vrste pakiranja ne mogu pomoći.

Maven također nudi još neke vrste pakiranja putem dodataka. Uz pomoć ovih dodataka možemo definirati prilagođenu vrstu pakiranja i životni ciklus njegove izrade. Neke od ovih vrsta su:

  • msi
  • o / min
  • katran
  • katran.bz2
  • katran.gz
  • tbz
  • zip

Da bismo definirali prilagođeni tip, moramo definirati njegov ambalažatip i faze u svom životnom ciklusu. Za to stvorite komponente.xml datoteka pod src / main / resources / META-INF / plexus imenik:

 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- dodatak: zip org.apache.maven.plugins: maven-install-plugin: install org.apache.maven.plugins: maven-deploy-plugin: deploy 

Do sada Maven ne zna ništa o našoj novoj vrsti pakiranja i njegovom životnom ciklusu. Da bi bio vidljiv, dodajmo dodatak u pom datoteka projekta i skup proširenja do pravi:

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

Sada će projekt biti dostupan za skeniranje i sustav će ga istražiti dodaci i compnenets.xml datoteka, također.

Osim svih ovih vrsta, Maven nudi i puno drugih vrsta pakiranja putem vanjskih projekata i dodataka. Na primjer, nar (matična arhiva), swf, i swc su vrste pakiranja za projekte koji proizvode Adobe Flash i Flex sadržaj. Za takve projekte potreban nam je dodatak koji definira prilagođeno pakiranje i spremište koje sadrži dodatak.

4. Zaključak

U ovom smo članku pogledali razne vrste pakiranja dostupne u Mavenu. Također, upoznali smo se s tim što ove vrste predstavljaju i kako se razlikuju u svom životnom ciklusu. Na kraju smo također naučili kako definirati prilagođenu vrstu pakiranja i prilagoditi zadani životni ciklus izrade.

Svi primjeri koda na Baeldungu izrađeni su pomoću Mavena. Svakako pogledajte naše razne Mavenove konfiguracije preko 0n GitHub-a.