Úvod do doplnku Maven Animal Sniffer

1. Úvod

Pri práci v prostredí Java sú chvíle, kedy musíme používať viac jazykových verzií súčasne.

Je bežné, že potrebujeme, aby bol náš program Java kompatibilný v čase kompilácie s jednou verziou Java (povedzme - Java 6), ale na to, aby ste aplikáciu mohli používať, musíte vo svojich vývojových nástrojoch používať inú verziu (povedzme - Java 8) a možno inú verziu. .

V tomto rýchlom článku si ukážeme, aké ľahké je pridať záruky nekompatibility založené na verzii Java a ako je možné použiť doplnok Animal Sniffer na označenie týchto problémov v čase zostavovania, a to tak, že náš projekt porovnáme s predtým generovanými podpismi.

2. Nastavenie -zdroj a -cieľ kompilátora Java

Začnime písmenom a ahoj svet Projekt Maven - kde na našom lokálnom počítači používame Java 7, ale chceli by sme ho nasadiť do produkčného prostredia, ktoré stále používa Java 6.

V tomto prípade môžeme nakonfigurovať plugin kompilátora Maven pomocou zdroj a cieľ polia smerujúce na Javu 6.

The „Zdroj“ pole sa používa na určenie kompatibility so zmenami jazyka Java a „Cieľ“ pole slúži na špecifikáciu kompatibility so zmenami JVM.

Pozrime sa teraz na konfiguráciu kompilátora Maven z pom.xml:

  org.apache.maven.plugins maven-compiler-plugin 3.7.0 1.6 1.6 

S programom Java 7 na našom lokálnom stroji a tlačou kódu Java „ahoj svet“ na konzolu, ak pokračujeme v budovaní tohto projektu pomocou nástroja Maven, bude tento produkt zostavený a bude fungovať správne na produkčnom poli so systémom Java 6.

3. Predstavujeme nekompatibility API

Pozrime sa teraz na to, aké ľahké je zaviesť náhodou nekompatibilitu API.

Povedzme, že začneme pracovať na nejakej novej požiadavke a použijeme niektoré funkcie API Java 7, ktoré v Java 6 neboli.

Pozrime sa na aktualizovaný zdrojový kód:

public static void main (String [] args) {System.out.println ("Hello World!"); System.out.println (StandardCharsets.UTF_8.name ()); }

java.nio.charset.StandardCharsets bol predstavený v prostredí Java 7.

Ak teraz pokračujeme a vykonáme zostavenie Maven, bude sa stále úspešne kompilovať, ale za behu zlyhá s chybou prepojenia na produkčnom boxe s nainštalovanou Java 6.

Dokumentácia Maven sa zmieňuje o tejto úskalí a odporúča ako jednu z možností použiť doplnok Animal Sniffer.

4. Hlásenie kompatibility API

Doplnok Animal Sniffer poskytuje dve základné funkcie:

  1. Generovanie podpisov modulu runtime Java
  2. Kontrola projektu podľa podpisov API

Poďme teraz upraviť pom.xml zahrnúť doplnok:

 org.codehaus.mojo animal-sniffer-maven-plugin 1.16 org.codehaus.mojo.signature java16 1.0 animal-sniffer verify check 

Tu sa konfiguračná časť programu Animal Sniffer vzťahuje na existujúci runtime podpis Java 6. Realizačná časť taktiež kontroluje a overuje zdrojový kód projektu proti danému podpisu a príznakom, ak sa zistia nejaké problémy.

Ak pôjdeme ďalej a zostavíme projekt Maven, zostavenie zlyhá s očakávaním chyby overenia podpisu pluginu:

[INFO] ----------------------------------------------- ------------------------- [INFO] BUILD FAILURE [INFO] ----------------- -------------------------------------------------- ----- [CHYBA] Nepodarilo sa vykonať cieľ org.codehaus.mojo: animal-sniffer-maven-plugin: 1.16: skontrolujte (animal-sniffer) na príklade projektu-animal-sniffer-mvn-plugin: Boli nájdené chyby podpisu. Overte ich a v prípade potreby ich ignorujte so správnou anotáciou.

5. Záver

V tomto tutoriáli sme preskúmali doplnok Maven Animal Sniffer a ako sa dá použiť na hlásenie prípadných nekompatibilít súvisiacich s API v čase zostavenia.

Celý zdrojový kód je ako vždy k dispozícii na serveri GitHub.


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