Maven Deploy to Nexus

1. Prehľad

V predchádzajúcom článku som pojednával o tom, ako môže projekt Maven lokálne nainštalovať nádobu tretej strany, ktorá ešte nebola nasadená na serveri Maven Central (alebo na ktoromkoľvek z ďalších veľkých a verejne hostených úložísk).

Toto riešenie by sa malo uplatniť iba v malých projektoch, kde môže byť nadmerná inštalácia, prevádzka a údržba úplného servera Nexus. Ako však projekt rastie,

Nexus sa rýchlo stáva jedinou skutočnou a zrelou voľbou pre hosťovanie artefaktov tretích strán, ako aj pre opätovné použitie interných artefaktov naprieč vývojovými prúdmi.

Tento článok ukáže, ako nasadiť artefakty projektu do Nexusu s Mavenom.

2. Požiadavky na spojitosť v pom.xml

Aby mohol Maven nasadiť artefakty, ktoré vytvára v balíček fázy budovania, je potrebné definovať informácie o úložisku, kde budú zabalené artefakty nasadené, prostredníctvom distribúciaManažment element:

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

Hostený, verejný Momentky úložisko vychádza z krabice na zariadení Nexus, takže už nie je potrebné nič ďalej vytvárať ani konfigurovať. Nexus uľahčuje určenie adries URL hostených úložísk - každé úložisko zobrazuje presný záznam, ktorý sa má pridať do projektu pom, pod Zhrnutie tab.

3. Pluginy

V predvolenom nastavení Maven manipuluje s mechanizmom nasadenia prostredníctvom maven-deploy-plugin - toto je namapované na nasadenie fáza predvoleného životného cyklu Maven:

 maven-deploy-plugin 2.8.1 default-deploy nasadiť nasadiť 

The maven-deploy-plugin je životaschopná možnosť na zvládnutie úlohy nasadenia na artefakty projektu do zariadenia Nexus, ale nebola postavená tak, aby plne využívala výhody toho, čo ponúka Nexus. Z tohto dôvodu Sonatype vytvoril doplnok pre Nexus - nexus-staging-maven-plugin - ktorý je v skutočnosti navrhnutý tak, aby plne využíval výhody pokročilejšej funkcie, ktorú Nexus ponúka - funkcií, ako je napríklad fázovanie.

Aj keď pre jednoduchý proces nasadenia nevyžadujeme funkcionalitu fázovania, s týmto vlastným doplnkom Nexus pôjdeme vpred, pretože bol zostavený s jasným účelom dobre komunikovať s Nexusom.

Jediný dôvod, prečo používať maven-deploy-plugin je ponechať otvorenú možnosť použitia alternatívy k Nexusu v budúcnosti - napríklad úložiska Artifactory. Avšak na rozdiel od iných komponentov, ktoré sa môžu skutočne meniť počas celého životného cyklu projektu, je veľmi nepravdepodobné, že by sa správca úložiska Maven zmenil, takže nie je potrebná flexibilita.

Prvým krokom pri používaní iného doplnku nasadenia vo fáze nasadenia je teda zakázanie existujúceho predvoleného mapovania:

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

Teraz môžeme definovať:

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

The nasadiť cieľ doplnku je mapovaný na nasadiť fáza stavby Maven.

Všimnite si tiež, že, ako už bolo spomenuté, pri jednoduchom nasadení systému Windows nepotrebujeme funkčnosť -SNAPSHOT artefakty do zariadenia Nexus, takže je to úplne zakázané prostredníctvom element.

Cieľ nasadenia predvolene zahŕňa postupný pracovný tok, ktorý sa odporúča pre zostavenia vydaní.

4. Globálne nastavenia.xml

Nasadenie do zariadenia Nexus je a zabezpečená prevádzka - a a nasadenie používateľ existuje na tento účel po vybalení z krabice v ktorejkoľvek inštancii zariadenia Nexus.

Konfigurácia Maven s povereniami tohto nasadenie používateľa, aby mohol správne komunikovať so zariadením Nexus, nie je možné vykonať v priečinku pom.xml projektu. Je to tak preto, lebo syntax súboru pom to neumožňuje, nehovoriac o tom, že pom môže byť verejným artefaktom, takže nie je vhodný na uchovávanie informácií o poverení.

Poverenia servera musia byť definované v globálnom Mavene nastavenie.xml:

  nasadenie snímok spojenia the_pass_for_the_deployment_user 

Server možno tiež nakonfigurovať tak, aby používal zabezpečenie založené na kľúčoch namiesto nespracovaných a holých textových údajov.

5. Proces nasadenia

Vykonanie procesu nasadenia je jednoduchá úloha:

mvn clean deploy -Dmaven.test.skip = true

Vynechanie testov je v kontexte úlohy nasadenia v poriadku, pretože táto úloha by mala byť poslednou úlohou z a potrubie nasadenia pre projekt.

Bežným príkladom takého potrubia nasadenia by mohla byť postupnosť Jenkinsových úloh, z ktorých každá spustí ďalšiu iba v prípade, že sa úspešne dokončí. Z tohto dôvodu je zodpovednosťou predchádzajúcich úloh v potrubí spustiť všetky testovacie balíčky z projektu - v čase, keď bude spustená úloha nasadenia, všetky testy by už mali prejsť.

Ak bol spustený jeden príkaz, potom môžu byť testy aktívne, aby boli spustené pred nasadenie fáza vykoná:

mvn čisté nasadenie

6. Záver

Toto je jednoduché, ale vysoko efektívne riešenie nasadenia artefaktov Maven do zariadenia Nexus.

Je to do istej miery aj názorové - nexus-staging-maven-plugin sa použije namiesto predvoleného maven-deploy-plugin; funkčnosť plánovania je zakázaná atď. - práve tieto voľby robia riešenie jednoduchým a praktickým.

Potenciálna aktivácia funkcie úplného stagingu môže byť predmetom budúceho článku.

Nakoniec sa budeme zaoberať procesom vydania v nasledujúcom článku.