Plugins dans Maven et POM.xml

Je viens de commencer à utiliser Maven et j’ai lu que les plugins sont des composants supplémentaires qui peuvent être utilisés.
Une structure typique du fichier pom.xml est

  org.koshik.javabrains JarName (A fldernamed JarName was created) 1.0-SNAPSHOT jar JarName http://maven.apache.org  UTF-8    junit junit 3.8.1 test    

Question : Où dois-je insérer une balise de plugin ? tels que les suivants:

  org.jibx jibx-maven-plugin 1.2.4    bind     

Avant la dépendance ou après l’étiquette de dependency ? Est-ce que ça importe?

      org.koshik.javabrains JarName (A fldernamed JarName was created) 1.0-SNAPSHOT jar JarName http://maven.apache.org  UTF-8     org.jibx jibx-maven-plugin 1.2.4    bind         junit junit 3.8.1 test    

    Vous pouvez également placer des plugins dans la section de si vous utilisez des profils maven. L’ordre n’a pas d’importance.

    Une clarification tardive sur deux points importants

    Où placer le plugin
    Un plugin devrait en effet être ajouté dans la plupart des cas dans la section build / plugins , mais il existe une différence importante entre le placer dans des plugins placer dans pluginManagement / plugins .

    Ce malentendu est souvent la cause d’un plugin non invoqué dans Maven ou d’un dépannage plus difficile:

    • Les plugins sous build / plugins font directement partie de la construction par défaut de Maven, s’ils spécifient une execution ou s’ils configurent quelque chose pour la version par défaut (voir ci-dessous)
    • Les plugins sous build / pluginManagement / plugins ne font pas nécessairement partie de la construction par défaut de Maven, c’est-à-dire qu’il s’agit d’une gestion, d’une astuce pour améliorer: si vous utilisez ce plugin, précisez ici, dans cette gestion.

      Mais qu’advient- il d’utiliser des moyens? Moyens: si le même plugin est également présent dans la section build / plugins , alors appliquez cette gestion (et alors seulement ce sera efficace); ou si le plugin est appelé par défaut par Maven, alors appliquez-le également.

      Mais comment un plugin est-il appelé par défaut? Cela fait partie de la philosophie principale derrière maven: convention over configuration. Par convention, lorsque vous spécifiez un certain packaging ( jar par défaut, mais il peut s’agir d’une war par exemple), vous souhaitez que certains plugins soient appelés. Pour construire un jar , jar par défaut le maven-jar-plugin ; pour construire une war , maven-war-plugin par défaut le maven-war-plugin et ainsi de suite. Donc, si vous spécifiez une configuration de plug-in dans le plug-in build / pluginManagement / pour un plug-in qui a une liaison par défaut à la version de Maven, alors il sera également utilisé.

    Commande
    En ce qui concerne le pom.xml des sections dans le fichier pom.xml , une précision supplémentaire est requirejse: elle est en effet sans importance dans la plupart des cas, mais l’ordre de l’élément plugin dans la section build / plugins peut être important. Depuis Maven 3.0.3 ( MNG-2258 ), différentes exécutions de plug-ins associées à la même phase Maven seront invoquées dans leur ordre de déclaration dans le fichier pom.xml . Cela signifie que la commande est importante dans ce cas, car cela peut affecter le comportement de la construction.

    De plus, l’ordre des déclarations de dependency peut également affecter votre construction vers la médiation de dépendance , c’est-à-dire que la première dépendance déclarée gagne en cas de conflit avec une dépendance transitive. Donc, encore une fois, la commande est importante dans certains cas .

    Last but not least, bien que le pom.xml ne soit pas important pour les autres sections du fichier pom.xml , la bonne habitude est de suivre les recommandations officielles de Maven et, en version simplifiée, de suivre cet ordre de déclaration:

                   

    Le sortpom-maven-plugin peut également être utilisé pour appliquer automatiquement cette commande standard, en pom.xml simplement les éléments suivants sur le fichier pom.xml concerné:

     mvn com.github.ekryd.sortpom:sortpom-maven-plugin:2.5.0:sort \ -Dsort.keepBlankLines -Dsort.predefinedSortOrder=recommended_2008_06 

    Pour plus de lecture :

    • Stack Overflow: Maven: qu’est-ce que pluginManagement?
    • Doc officiel Maven: Maven POM Reference, PluginManagement
    • Liaisons par défaut officielles Maven
    • Doc officiel Maven: Médiation de la dépendance
    • Maven doc officiel: Maven Code Style et conventions de code

    doit être placé dans la section qui doit être placée dans la section ou . L’ordre de la section ou n’a pas d’importance.

    La référence complète sur pom.xml est ici: http://maven.apache.org/pom.html

    Si vous souhaitez utiliser le plug-in pour la construction, vous pouvez utiliser la structure ci-dessous.

           

    Vous pouvez insérer votre deuxième fragment de code n’importe où dans le fichier pom.xml entre deux balises .

    L’ordre des sections dans POM importe peu. En général, il existe des plug-ins de compilation et des plug-ins de création de rapports dans Maven. Votre cas est d’utiliser le plugin de compilation, vous devez donc placer ce bloc dans la section ...

    Regardez ceci pour quelques bases sur les plugins.