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