Una aclaración finales en dos puntos importantes
Dónde colocar plugin
Un plugin
de hecho hay que añadir en la mayoría de los casos dentro de la sección build
/plugins
, sin embargo hay una diferencia importante entre colocarlo dentro de plugins
contra colocarlo dentro de pluginManagement
/plugins
.
Este malentendido es menudo la causa de un plugin no se invoca en Maven o un solución de problemas más difíciles:
- complementos, situado dentro
build
/plugins
son directamente parte de la construcción Maven por defecto, si especifican un execution
o si configuran algo para la compilación predeterminada (ver a continuación)
Los complementos bajo build
/pluginManagement
/plugins
no son necesariamente parte de la compilación predeterminada de Maven, es decir, es una gestión, es una pista para maven: si utilizas este complemento, entonces usa la versión, la configuración, las ejecuciones que especifico aquí, en esta administración.
¿Pero qué pasa a usar significa? Medios: si el mismo complemento es también presente en la sección build
/plugins
, luego aplique esta gestión (y solo entonces será efectiva); o si el complemento es invocado por defecto por Maven, luego también aplíquelo.
Pero, ¿cómo se invoca un complemento de forma predeterminada? Esa es parte de la filosofía principal detrás de maven: convención sobre la configuración. Por convención, cuando especifica un cierto packaging
(predeterminado jar
, pero puede ser war
por ejemplo), desea que se invoquen ciertos complementos. Para construir un jar
, by default invoque el maven-jar-plugin
; para construir un war
, by default invoque el maven-war-plugin
y así sucesivamente. Por lo tanto, si especifica una configuración de complemento en el build
/pluginManagement
/plugin
para un complemento que tiene un enlace predeterminado a la compilación Maven, entonces también se usará. Se requiere
pedidos
En cuanto al orden de las secciones dentro del archivo pom.xml
, una aclaración adicional: es de hecho irrelevante en la mayoría de los casos, sin embargo, el orden de plugin
elemento alguna en el build
/plugins
la sección puede ser importante. Desde Maven 3.0.3 (MNG-2258
), se invocarán diferentes ejecuciones de complemento asociadas a la misma fase Maven en su orden de declaración en el archivo pom.xml
. Es decir, el pedido es importante en este caso, ya que puede afectar el comportamiento de la compilación.
Además, también el orden de las declaraciones dependency
puede afectar su compilación hacia Dependency Mediation, es decir, la primera dependencia declarada gana en caso de conflicto contra una dependencia transitiva. Entonces, una vez más, el pedido de es importante en ciertos casos.
Por último, pero no menos importante, a pesar de pedidos no es importante para otras secciones del archivo pom.xml
, buen hábito es seguir oficial Maven recommendations y, como una versión simplificada, siga este orden de declaración:
<project>
<modelVersion/>
<parent/>
<groupId/>
<artifactId/>
<version/>
<packaging/>
<properties/>
<dependencyManagement/>
<dependencies/>
<build/>
<reporting/>
<profiles/>
</project>
El sortpom-maven-plugin
también se puede utilizar para aplicar automáticamente este ordenamiento estándar, simplemente llamando al siguiente en el archivo en cuestión pom.xml
:
mvn com.github.ekryd.sortpom:sortpom-maven-plugin:2.5.0:sort \
-Dsort.keepBlankLines -Dsort.predefinedSortOrder=recommended_2008_06
Para la lectura adicional:
Tanque mucho. –