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:

  1. A Java futásidejű aláírások generálása
  2. 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.