Bevezetés az Animal Sniffer Maven beépülő modulba
1. Bemutatkozás
A Java-ban végzett munka során előfordul, hogy egyszerre több nyelvi verziót kell használnunk.
Gyakran szükséges, hogy a Java programunk fordítási idővel kompatibilis legyen egy Java verzióval (mondjuk - Java 6), de más verziót (mondjuk - Java 8) kell használnunk a fejlesztői eszközeinkben, és az alkalmazás futtatásához talán egy másik verziót kell használnunk. .
Ebben a rövid cikkben bemutatjuk, hogy mennyire egyszerű hozzáadni a Java verzió-alapú összeférhetetlenségi biztosítékokat, és hogy az Animal Sniffer beépülő modullal miként lehet ezeket a problémákat már az elkészítéskor megjelölni, ellenőrizve a projektünket a korábban generált aláírásokkal.
2. Beállítás -forrás és -cél Java fordító
Kezdjük egy Helló Világ Maven projekt - ahol a Java 7-et használjuk a helyi gépünkön, de szeretnénk telepíteni a projektet a termelési környezetbe, amely még mindig a Java 6-ot használja.
Ebben az esetben a Maven fordító plugint konfigurálhatjuk forrás és cél a Java 6-ra mutató mezők.
A "forrás" mező a Java nyelvi változásokkal való kompatibilitás meghatározására szolgál "cél" mező a JVM-módosításokkal való kompatibilitás megadására szolgál.
Most nézzük meg a Maven fordító konfigurációját pom.xml:
org.apache.maven.plugins maven-compiler-plugin 3.7.0 1.6 1.6
Ha a helyi gépünkön a Java 7 és a Java kód nyomtatja a „hello world” szót a konzolra, ha tovább megyünk, és a Maven segítségével építjük fel ezt a projektet, akkor a Java 6-ot futtató gyártósoron megfelelően fog felépíteni és működni.
3. API-kompatibilitások bevezetése
Most nézzük meg, milyen egyszerű véletlenül bevezetni az API-kompatibilitást.
Tegyük fel, hogy elkezdünk dolgozni valamilyen új követelményen, és használunk a Java 7 olyan API-szolgáltatásait, amelyek nem voltak jelen a Java 6-ban.
Nézzük meg a frissített forráskódot:
public static void main (String [] args) {System.out.println ("Hello Világ!"); System.out.println (StandardCharsets.UTF_8.name ()); }
java.nio.charset.StandardCharsets Java 7-ben vezették be.
Ha most továbblépünk és végrehajtjuk a Maven-összeállítást, akkor az továbbra is sikeresen lefordít, de futás közben nem sikerül összekapcsolási hibával egy termelési dobozban, amelyre telepítve van a Java 6.
A Maven dokumentáció ezt a buktatót említi, és az Animal Sniffer plugin használatát javasolja az egyik lehetőségként.
4. Jelentés az API kompatibilitásokról
Az Animal Sniffer plugin két alapvető képességgel rendelkezik:
- A Java futásidejű aláírások generálása
- A projekt ellenőrzése az API aláírásokkal szemben
Most módosítsuk a pom.xml a beépülő modul beépítéséhez:
org.codehaus.mojo animal-sniffer-maven-plugin 1.16 org.codehaus.mojo.signature java16 1.0 animal-sniffer ellenőrizze az ellenőrzést
Itt az Animal Sniffer konfigurációs szakasza egy meglévő Java 6 futásidejű aláírásra utal. Ezenkívül a végrehajtási szakasz ellenőrzi és ellenőrzi a projekt forráskódját az adott aláírással és jelzőkkel, ha bármilyen problémát találnak.
Ha továbblépünk és elkészítjük a Maven projektet, akkor az összeállítás meghiúsul a várt várakozások szerint az aláírás ellenőrzési hibát jelentő plugin segítségével:
[INFO] ----------------------------------------------- ------------------------- [INFO] ÉPÍTÉSI HIBA [INFO] ----------------- -------------------------------------------------- ----- [HIBA] Nem sikerült végrehajtani az org.codehaus.mojo: animal-sniffer-maven-plugin célt: 1.16: check (animal-sniffer) a project example-animal-sniffer-mvn-plugin esetében: Aláírási hibákat találtunk. Ellenőrizze őket, és ha szükséges, hagyja figyelmen kívül a megfelelő megjegyzéssel.
5. Következtetés
Ebben az oktatóanyagban megvizsgáltuk a Maven Animal Sniffer beépülő modult, és azt, hogyan lehet jelenteni az API-val kapcsolatos összeegyeztethetetlenségek jelentését, ha vannak ilyenek építéskor.
Mint mindig, a teljes forráskód elérhető a GitHubon.