Uvod u dodatak Animal Sniffer Maven
1. Uvod
Dok radimo u Javi, postoje trenuci kada trebamo koristiti višejezične verzije istodobno.
Uobičajeno je da naš Java program mora biti kompatibilan s jednom Java verzijom (recimo - Java 6), ali da u našim razvojnim alatima moramo koristiti drugu verziju (recimo - Java 8) i možda drugu verziju za pokretanje aplikacije .
U ovom brzom članku pokazat ćemo kako je lako dodati zaštitne mjere protiv kompatibilnosti temeljene na Javi i kako se dodatak Animal Sniffer može upotrijebiti za označavanje ovih problema u vrijeme izrade provjerom našeg projekta u odnosu na prethodno generirane potpise.
2. Postavljanje -izvor i -cilj Java Compilera
Počnimo s a Pozdrav svijete Maven projekt - gdje koristimo Javu 7 na našem lokalnom računalu, ali želimo projekt implementirati u produkcijsko okruženje koje još uvijek koristi Javu 6.
U tom slučaju možemo konfigurirati dodatak za kompajler Maven sa izvor i cilj polja koja upućuju na Javu 6.
The "izvor" polje se koristi za specificiranje kompatibilnosti s promjenama jezika Java i "cilj" polje služi za specificiranje kompatibilnosti s JVM promjenama.
Pogledajmo sada konfiguraciju Maven prevoditelja za pom.xml:
org.apache.maven.plugins maven-compiler-plugin 3.7.0 1.6 1.6
Uz Javu 7 na našem lokalnom stroju i Java kod koji ispisuje "zdravo svijete" na konzolu, ako nastavimo i gradimo ovaj projekt pomoću Mavena, on će se pravilno graditi i raditi na proizvodnom okviru koji pokreće Javu 6.
3. Predstavljanje API nekompatibilnosti
Pogledajmo sada kako je lako slučajno uvesti API nekompatibilnost.
Recimo da počnemo raditi na nekom novom zahtjevu i koristimo neke API značajke Jave 7 koje nisu bile prisutne u Javi 6.
Pogledajmo ažurirani izvorni kod:
javna statička void glavna (String [] args) {System.out.println ("Hello World!"); System.out.println (StandardCharsets.UTF_8.name ()); }
java.nio.charset.StandardCharsets uveden je u Javi 7.
Ako sada nastavimo i izvršimo izgradnju Maven, ona će se i dalje uspješno kompajlirati, ali neće uspjeti tijekom izvođenja s pogreškom povezivanja na proizvodnom okviru s instaliranom Java 6.
U dokumentaciji Mavena spominje se ova zamka i preporučuje se dodatak Animal Sniffer kao jedna od opcija.
4. Izvještavanje o API kompatibilnostima
Dodatak Animal Sniffer nudi dvije osnovne mogućnosti:
- Generiranje potpisa izvršavanja Java
- Provjera projekta protiv API potpisa
Izmijenimo sada pom.xml uključiti dodatak:
org.codehaus.mojo animal-sniffer-maven-plugin 1.16 org.codehaus.mojo.signature java16 1.0 njuškalo životinja provjeri provjera
Ovdje se odjeljak za konfiguraciju Animal Sniffer odnosi na postojeći runtime potpis Java 6. Također, odjeljak izvršenja provjerava i provjerava izvorni kôd projekta u odnosu na zadani potpis i zastavice ako se pronađu problemi.
Ako nastavimo i gradimo projekt Maven, izrada neće uspjeti ako se dodatak izvještava o pogrešci provjere potpisa:
[INFO] ------------------------------------------------ ------------------------- [INFO] IZGRADNJA KVARA [INFO] ----------------- -------------------------------------------------- ----- [POGREŠKA] Nije uspjelo izvršiti cilj org.codehaus.mojo: animal-sniffer-maven-plugin: 1.16: provjeri (animal-sniffer) na primjeru projekta-animal-sniffer-mvn-plugin: Pronađene su pogreške potpisa. Provjerite ih i po potrebi ih zanemarite odgovarajućom bilješkom.
5. Zaključak
U ovom smo tutorijalu istražili dodatak Maven Animal Sniffer i kako se on može koristiti za prijavljivanje nekompatibilnosti povezanih s API-jem u vrijeme izrade.
Kao i uvijek, puni izvorni kod dostupan je na GitHub-u.