Introduksjon til Animal Sniffer Maven Plugin

1. Introduksjon

Mens vi arbeider i Java, er det tidspunkter når vi trenger å bruke flere språkversjoner samtidig.

Det er vanlig at Java-programmet vårt må være kompatibeltidskompatibelt med en Java-versjon (si - Java 6), men at du trenger å bruke en annen versjon (si - Java 8) i utviklingsverktøyene våre og en kanskje annen versjon for å kjøre applikasjonen .

I denne raske artikkelen vil vi demonstrere hvor enkelt det er å legge til Java-versjonsbaserte inkompatibilitetssikringer og hvordan Animal Sniffer-plugin kan brukes til å flagge disse problemene ved byggetid ved å sjekke prosjektet vårt mot tidligere genererte signaturer.

2. Innstilling -kilde og -mål av Java Compiler

La oss starte med en Hei Verden Maven-prosjekt - der vi bruker Java 7 på vår lokale maskin, men vi vil distribuere prosjektet til produksjonsmiljøet som fortsatt bruker Java 6.

I dette tilfellet kan vi konfigurere Maven compiler plugin med kilde og mål felt som peker til Java 6.

De "kilde" feltet brukes til å spesifisere kompatibilitet med Java-språkendringer og "mål" feltet brukes til for å spesifisere kompatibilitet med JVM-endringer.

La oss nå se på Maven compiler konfigurasjon av pom.xml:

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

Med Java 7 på vår lokale maskin og Java-kodetrykk “hei verden” til konsollen, hvis vi fortsetter og bygger dette prosjektet ved hjelp av Maven, vil det bygge og fungere riktig på en produksjonsboks som kjører Java 6.

3. Innføring av API-inkompatibiliteter

La oss nå se på hvor enkelt det er å introdusere API-inkompatibilitet ved et uhell.

La oss si at vi begynner å jobbe med noen nye krav, og vi bruker noen API-funksjoner i Java 7 som ikke var til stede i Java 6.

La oss se på den oppdaterte kildekoden:

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

java.nio.charset.StandardCharsets ble introdusert i Java 7.

Hvis vi nå fortsetter og utfører Maven-bygningen, vil den fremdeles kompileres, men mislykkes ved kjøretid med koblingsfeil på en produksjonsboks med Java 6 installert.

Maven-dokumentasjonen nevner denne fallgruven og anbefaler å bruke plugin for Animal Sniffer som et av alternativene.

4. Rapportering API-kompatibilitet

Animal Sniffer-plugin gir to kjernefunksjoner:

  1. Genererer signaturer for Java-kjøretiden
  2. Kontrollerer et prosjekt mot API-signaturer

La oss nå endre pom.xml å inkludere plugin:

 org.codehaus.mojo animal-sniffer-maven-plugin 1.16 org.codehaus.mojo.signature java16 1.0 animal-sniffer verifisere sjekk 

Her refererer konfigurasjonsseksjonen til Animal Sniffer til en eksisterende Java 6-kjøretidssignatur. Utførelsesdelen sjekker og verifiserer prosjektets kildekode mot den gitte signaturen og flaggene hvis det oppdages problemer.

Hvis vi fortsetter og bygger Maven-prosjektet, mislykkes bygningen med bekreftelsesfeil for plugin-rapporteringssignatur som forventet:

[INFO] ------------------------------------------------------- ------------------------- [INFO] BYGG FEIL [INFO] ----------------- -------------------------------------------------- ----- [FEIL] Kunne ikke kjøre mål org.codehaus.mojo: animal-sniffer-maven-plugin: 1.16: sjekk (animal-sniffer) på prosjekteksempel-animal-sniffer-mvn-plugin: Signaturfeil funnet. Bekreft dem og ignorere dem med riktig kommentar om nødvendig.

5. Konklusjon

I denne opplæringen undersøkte vi Maven Animal Sniffer-pluginet og hvordan det kan brukes til å rapportere API-relaterte inkompatibiliteter, hvis noen på byggetiden.

Som alltid er hele kildekoden tilgjengelig på GitHub.


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