java - plugin - ¿Puede y debe un Maven POM especificar si requiere Maven 3 o más reciente?
maven-compiler-plugin java 10 (3)
Actualmente estoy haciendo una limpieza de los proyectos Java que utilizan Maven, y uso el IDE de NetBeans para "depurar" los problemas en el POM. He establecido Maven 3.0.4 en el IDE como la versión de Maven, pero otros desarrolladores o nuestro sistema de Intgeración continua pueden tener configuraciones diferentes.
¿Es posible "imponer" una versión específica de Maven directamente en el POM (por ejemplo, utilizando un elemento específico de Maven 3)?
Lo mejor que puedes hacer es usar el complemento de Enforcer. Aquí hay un ejemplo:
http://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html
No hay un método listo para usar en Maven para hacer esto. En realidad, hay una etiqueta de prerequisites
pero no funciona bien porque los niños no la heredan.
Otra opción es usar el elemento de requisitos previos en el pom, por ejemplo:
<project>
...
<prerequisites>
<maven>3.0.0</maven>
</prerequisites>
...
</project>
Como se señaló en la respuesta de Michal Kalinowski, este enfoque simple no funciona tan bien para proyectos infantiles.
Para obtener un resumen de qué enfoque funcionará mejor para usted, consulte aquí: hacer cumplir maven 3: ¿cuándo usar el complemento de maven reforzar? ¿Cuándo usar el elemento de prerrequisitos de pom?
Sí puedes y deberías. Algunos complementos de Maven requieren Maven 3 o más nuevo.
Utilice el complemento de Maven-enforcer agregando lo siguiente a su pom.xml
:
<build>
<plugins>
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>enforce-maven-3</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>3.0.5</version>
</requireMavenVersion>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>