Maven se raspoređuje u Nexus

1. Pregled

U prethodnom članku raspravljao sam o tome kako Maven projekt može lokalno instalirati nezavisnu jar koja još nije postavljena na Maven Central (ili na bilo koje drugo veliko i javno hostirano spremište).

To bi se rješenje trebalo primijeniti samo u malim projektima gdje je instaliranje, pokretanje i održavanje cjelovitog Nexus poslužitelja pretjerano. Međutim, kako projekt raste,

Nexus brzo postaje jedina stvarna i zrela opcija za hosting artefakata trećih strana, kao i za ponovnu upotrebu internih artefakata u razvojnim tokovima.

Ovaj će članak pokazati kako rasporediti artefakte projekta do Nexusa, s Mavenom.

2. Zahtjevi za Nexus u pom.xml

Kako bi Maven mogao rasporediti artefakte koje stvara u paket fazi gradnje, treba definirati podatke o spremištu gdje će se pakirani artefakti rasporediti putem distribucijaUpravljanje element:

  nexus-snimke // localhost: 8081 / nexus / content / repositories / snapshots 

Domaćin, javni Snimke spremište dolazi iz kutije na Nexusu, tako da nema potrebe za daljnjim stvaranjem ili konfiguriranjem. Nexus olakšava određivanje URL-ova svojih hostiranih spremišta - svako spremište prikazuje točan unos koji će se dodati u projekta, pod Sažetak tab.

3. Dodaci

Prema zadanim postavkama Maven upravlja mehanizmom za razmještanje putem maven-deploy-plugin - ovo preslikano na raspoređivanje faza zadanog Mavenovog životnog ciklusa:

 maven-deploy-plugin 2.8.1 default-deploy implementacija implementacije 

The maven-deploy-plugin je izvediva opcija za rješavanje zadatka postavljanja na artefakte projekta na Nexus, ali nije izgrađena kako bi u potpunosti iskoristila ono što Nexus nudi. Zbog te činjenice, Sonatype je izradio dodatak specifičan za Nexus - dodatak za nexus-staging-maven - koji je zapravo osmišljen kako bi u potpunosti iskoristio napredniju funkcionalnost koju Nexus nudi - funkciju poput postavljanja na scenu.

Iako nam za jednostavan postupak implementacije nije potrebna funkcionalnost insceniranja, nastavit ćemo s ovim prilagođenim Nexus dodatkom jer je izgrađen s jasnom svrhom da dobro razgovara s Nexusom.

Jedini razlog za upotrebu maven-deploy-plugin je zadržati otvorenu mogućnost korištenja alternative Nexusu u budućnosti - na primjer, spremište Artifactory. Međutim, za razliku od ostalih komponenata koje se mogu stvarno promijeniti tijekom životnog ciklusa projekta, malo je vjerojatno da će se Maven Manager spremišta promijeniti, pa fleksibilnost nije potrebna.

Dakle, prvi korak u korištenju drugog dodatka za implementaciju u fazi implementacije je onemogućavanje postojećeg, zadanog mapiranja:

 org.apache.maven.plugins maven-deploy-plugin $ {maven-deploy-plugin.version} true 

Sada možemo definirati:

 org.sonatype.plugins nexus-staging-maven-plugin 1.5.1 default-deploy rasporediti rasporediti nexus // localhost: 8081 / nexus / true 

The rasporediti Cilj dodatka preslikava se na rasporediti faza gradnje Mavena.

Također primijetite da, kao što je već rečeno, ne treba nam inscenacijska funkcionalnost u jednostavnom postavljanju -SNIMAK artefakata na Nexusu, tako da je u potpunosti onemogućen putem element.

Prema zadanim postavkama, cilj postavljanja uključuje tijek tijeka, koji se preporučuje za izrade izdanja.

4. Globalno postavke.xml

Uvođenje u Nexus je osiguran rad - i a raspoređivanje korisnik u tu svrhu postoji odmah na bilo kojoj instanci Nexusa.

Konfiguriranje Mavena s ovima vjerodajnicama raspoređivanje korisnika, tako da može pravilno komunicirati s Nexusom, ne može se izvršiti u pom.xml projekta. To je zato što je sintaksa pom to ne dopušta, a da se ne spominje činjenica da pom može biti javni artefakt, pa nije prikladan za čuvanje vjerodajnica.

Vjerodajnice poslužitelja moraju se definirati u globalnom Mavenu postavka.xml:

  nexus-snapshots postavljanje_propusnog_za_korisnika_razmještaja 

Poslužitelj se također može konfigurirati za upotrebu sigurnosti temeljene na ključu umjesto sirovih i otvorenih podataka.

5. Proces implementacije

Izvođenje postupka implementacije jednostavan je zadatak:

mvn čista implementacija -Dmaven.test.skip = true

Preskakanje testova je u redu u kontekstu posla implementacije jer bi ovaj posao trebao biti zadnji posao iz a razvodni cjevovod za projekt.

Uobičajeni primjer takvog cjevovoda za postavljanje bio bi niz Jenkinsovih poslova, svaki bi pokrenuo sljedeći samo ako se uspješno završi. Kao takvi, odgovornost prethodnih poslova u pripremi je pokretanje svih programskih paketa iz projekta - do trenutka pokretanja posla implementacije, svi bi testovi već trebali proći.

Ako je pokrenuta jedna naredba, tada se testovi mogu održavati aktivnima da bi se izvodili prije raspoređivanje faza izvršava:

mvn čisto raspoređivanje

6. Zaključak

Ovo je jednostavno, ali vrlo učinkovito rješenje za raspoređivanje artefakata Maven na Nexus.

Također je donekle samopouzdan - dodatak za nexus-staging-maven koristi se umjesto zadanog maven-deploy-plugin; funkcionalnost uprizorenja je onemogućena, itd. - upravo ovi izbori čine rješenje jednostavnim i praktičnim.

Potencijalno aktiviranje pune funkcionalnosti postavljanja može biti predmet budućeg članka.

Konačno, u sljedećem ćemo članku razmotriti postupak izdavanja.