Használja a Maven függőségének legújabb verzióját

1. Áttekintés

A Maven-függőségek manuális frissítése mindig fárasztó munka volt, különösen azokban a projektekben, amelyekben sok könyvtárat adott ki gyakran.

Ebben az oktatóanyagban megtanuljuk hogyan lehet kihasználni a Versions Maven beépülő modult függőségeink naprakészen tartása érdekében.

Mindenekelőtt ez rendkívül hasznos lehet olyan folyamatos integrációs folyamatok megvalósításakor, amelyek automatikusan frissítik a függőségeket, tesztelik, hogy minden továbbra is megfelelően működik-e, és elvégzi vagy visszavonja az eredményt, amelyik megfelelő.

2. Maven verziótartomány szintaxisa

A Maven2 napokban a fejlesztők meghatározhatták azokat a verziótartományokat, amelyeken belül a műtermékeket kézi beavatkozás nélkül frissítették volna.

Ez a szintaxis továbbra is érvényes, több projektben is használják, ezért érdemes tudni:

Mindazonáltal, ha lehetséges, kerülnünk kell a Versions Maven beépülő modul javára, mert a konkrét változatok kívülről történő előrehaladása határozottan nagyobb ellenőrzést biztosít számunkra, mint hagyni, hogy Maven az egész műveletet egyedül kezelje.

2.1. Elavult szintaxis

A Maven2 két speciális metaverziós értéket is biztosított az eredmény eléréséhez: LEGÚJABB és KIADÁS.

LEGÚJABB a lehető legújabb verziót keresi, míg KIADÁS célja a legújabb nem SNAPSHOT verzió.

Valóban, még mindig teljesen rendszeres függőségekre érvényes felbontás.

Ez a régi frissítési módszer azonban kiszámíthatatlanságot okozott ott, ahol a CI-nek reprodukálhatóságra volt szüksége. Ezért a plugin-függőségek felbontása miatt elavult.

3. Verziók Maven Plugin

A Versions Maven beépülő modul manapság a verziókezelés tényleges kezelése.

A távoli adattárak magas szintű összehasonlításától kezdve az SNAPSHOT verziók alacsony szintű időbélyeg-zárjáig terjedő célok hatalmas listája lehetővé teszi számunkra, hogy a függőséget magában foglaló projektjeink minden szempontjára vigyázzunk.

Noha közülük sokan nem tartoznak az oktatóanyag körébe, nézzük meg közelebbről azokat, amelyek segítenek nekünk a frissítési folyamatban.

3.1. A teszteset

Indulás előtt határozzuk meg tesztesetünket:

  • három KIADÁS kemény kódolású verzióval
  • egy kiadás egy tulajdonság verzióval, és
  • egy SNAPSHOT
  commons-io commons-io 2.3 org.apache.commons commons-collections4 4.0 org.apache.commons commons-lang3 3.0 org.apache.commons commons-compress $ {commons-compress-version} commons-beanutils commons-beanutils 1.9.1 -SNAPSHOT 1.15 

Végül zárjuk ki a műtárgyat is a folyamatból, amikor meghatározzuk a beépülő modult:

   org.codehaus.mojo változat-maven-plugin 2.7. org.apache.commons: commons-collections4 

4. Az elérhető frissítések megjelenítése

Először is, hogy egyszerűen megtudjuk, hogy és hogyan tudjuk frissíteni a projektünket, a feladat megfelelő eszköz verziók: kijelző-függőség-frissítések:

mvn verziók: kijelző-függőség-frissítések

Ahogy látjuk, a folyamat minden RELEASE verziót tartalmazott. Még azt is tartalmazta commons-gyűjtemények4 mivel a konfigurációban szereplő kizárás a frissítési folyamatra vonatkozik, és nem a felfedezésre.

Ezzel szemben figyelmen kívül hagyta az SNAPSHOT-ot, mivel ez egy fejlesztői verzió, amelyet gyakran nem biztonságos automatikusan frissíteni.

5. A függőségek frissítése

A frissítés első futtatásakor a plugin létrehoz egy biztonsági másolatot a pom.xml nevezett pom.xml.versionsBackup.

Míg minden iteráció megváltoztatja a pom.xml, a biztonsági mentési fájl megőrzi a projekt eredeti állapotát a felhasználó elkötelezettségének pillanatáig ( mvn verziók: elkötelez) vagy visszavonás (keresztül mvn verziók: visszaállítás) az egész folyamat.

5.1. A SNAPSHOT-ok konvertálása RELEASE-kké

Néha előfordul, hogy egy projekt tartalmaz egy SNAPSHOT-ot (egy változatot, amely még mindig fejlesztés alatt áll).

Tudjuk használni verziók: use-releases ellenőrizni, hogy a tudósító RELEASE közzétételre került-e, és még inkább átalakítani a SNAPSHOT-ot egyidejűleg az adott Kiadássá

mvn verziók: use-releases 

5.2. Frissítés a következő kiadásra

Minden nem SNAPSHOT függőséget a legközelebbi verzióra portolhatunk val vel verziók: use-next-releases:

mvn verziók: use-next-releases 

Jól látható, hogy a bővítmény frissült commons-io, commons-lang3, sőt még közönséges-beanutil, amely már nem SNAPSHOT, a következő verziójukra.

A legfontosabb, hogy figyelmen kívül hagyta commons-gyűjtemények4, amely a plugin konfigurációjában nincs megadva, és commons-tömörít, amelynek verziószáma dinamikusan van megadva egy tulajdonság révén.

5.3. Frissítés a legfrissebb kiadásra

Minden nem SNAPSHOT függőség frissítése legújabb kiadásához ugyanúgy működik, egyszerűen megváltoztatva a célt verziók: use-latest-releases:

mvn verziók: use-latest-releases 

6. A nem kívánt verziók kiszűrése

Abban az esetben, ha bizonyos verziókat figyelmen kívül akarunk hagyni, a plugin konfigurációja hangolható a szabályok dinamikus betöltéséhez egy külső fájlból:

 org.codehaus.mojo változat-maven-plugin 2.7 //www.mycompany.com/maven-version-rules.xml 

A figyelemre méltó, hivatkozhat egy helyi fájlra is:

fájl: ///home/andrea/maven-version-rules.xml 

6.1. A verziók figyelmen kívül hagyása globálisan

Konfigurálhatjuk a szabályfájlunkat úgy figyelmen kívül hagyja az adott reguláris kifejezésnek megfelelő verziókat:

  . * - béta 

6.2. A verziók figyelmen kívül hagyása szabályonként

Végül, abban az esetben, ha az igényeink konkrétabbak, akkor szabályokat készíthetünk:

    . * - KÖZLEMÉNY 2.1.0 

7. Következtetés

Láttuk, hogyan lehet ellenőrizni és frissíteni a projekt függőségeit biztonságos, automatikus és Maven3-kompatibilis módon.

Mint mindig, a forráskód is elérhető a GitHubon, valamint egy szkript, amely mindent lépésről lépésre és bonyolultság nélkül mutat be.

Működésének megtekintéséhez egyszerűen töltse le a projektet, és futtassa a terminálban (vagy a Git Bash-ban, ha Windows-ot használ):

./run-the-demo.sh

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