Introduction au plug-in Animal Sniffer Maven

Introduction au plug-in Animal Sniffer Maven

1. introduction

Lorsque vous travaillez en Java, il est parfois nécessaire d’utiliser plusieurs versions linguistiques simultanément.

Il est courant d'avoir besoin que notre programme Java soit compatible au moment de la compilation avec une version Java (disons - Java 6) mais d'avoir besoin d'utiliser une version différente (par exemple - Java 8) dans nos outils de développement et une version peut-être différente pour exécuter l'application .

Dans cet article rapide, nous allons montrer à quel point il est facile d'ajouter des garanties d'incompatibilité basées sur la version Java et comment le plug-in Animal Sniffer peut être utilisé pour signaler ces problèmes au moment de la construction en comparant notre projet aux signatures précédemment générées.

2. Définition de-source et-target du compilateur Java

Commençons par un projet Mavenhello world - dans lequel nous utilisons Java 7 sur notre machine locale, mais nous souhaitons déployer le projet dans l'environnement de production qui utilise toujours Java 6.

Dans ce cas, nous pouvons configurer le plugin du compilateur Maven avec les champssource ettarget pointant vers Java 6.

Le champ“source” est utilisé pour spécifier la compatibilité avec les changements de langage Java et le champ“target” est utilisé pour spécifier la compatibilité avec les changements JVM.

Voyons maintenant la configuration du compilateur Maven depom.xml:


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

Avec Java 7 sur notre machine locale et le code Java imprimant “hello world” sur la console, si nous construisons ce projet à l’aide de Maven, il se construira et fonctionnera correctement sur un boîtier de production exécutant Java 6.

3. Présentation des incompatibilités d'API

Voyons maintenant à quel point il est facile d'introduire une incompatibilité d'API par accident.

Disons que nous commençons à travailler sur une nouvelle exigence et que nous utilisons certaines fonctionnalités d'API de Java 7 qui n'étaient pas présentes dans Java 6.

Examinons le code source mis à jour:

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

java.nio.charset.StandardCharsets a été introduit dans Java 7.

Si nous allons maintenant exécuter la construction Maven, la compilation sera toujours réussie mais échouera au moment de l'exécution avec une erreur de liaison sur une boîte de production avec Java 6 installé.

Le Mavendocumentation mentionne cet écueil et recommande d'utiliser le plugin Animal Sniffer comme l'une des options.

4. Compatibilité des API de création de rapports

Le plugin Animal Sniffer fournit deux fonctionnalités essentielles:

  1. Génération des signatures du runtime Java

  2. Vérification d'un projet par rapport aux signatures API

Modifions maintenant lespom.xml pour inclure le plugin:


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

Ici, la section de configuration d’Animal Sniffer fait référence à une signature d’exécution Java 6 existante. En outre, la section d'exécution vérifie et vérifie le code source du projet par rapport à la signature donnée et les indicateurs si des problèmes sont détectés.

Si nous construisons le projet Maven, la construction échouera avec l'erreur de vérification de la signature du plug-in, comme prévu:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:animal-sniffer-maven-plugin:1.16:check
(animal-sniffer) on project example-animal-sniffer-mvn-plugin: Signature errors found.
Verify them and ignore them with the proper annotation if needed.

5. Conclusion

Dans ce tutoriel, nous avons exploré le plug-in Maven Animal Sniffer et comment il peut être utilisé pour signaler les incompatibilités liées aux API, le cas échéant, au moment de la construction.

Comme toujours, le code source complet est disponibleover on GitHub.