plugin example enforcer java maven maven-enforcer-plugin

java - example - versiones: display-plugin-updates no entiende maven-enforcer-plugin



enforcer rules (3)

Entonces, estoy tratando de usar la última versión de algunos complementos. Anteriormente, he usado la etiqueta de requisitos previos, pero muchos recursos ( example ) dicen que debería considerarse obsoleto y que, en su lugar, se debería usar el complemento-ejecutor-plugin. esta es mi configuracion

<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.4</version> </requireMavenVersion> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin>

Sin embargo, cuando ejecuto versiones mvn: display-plugin-updates todavía obtengo este texto:

[ERROR] Project does not define required minimum version of Maven. [ERROR] Update the pom.xml to contain [ERROR] <prerequisites> [ERROR] <maven>3.0</maven> [ERROR] </prerequisites> [INFO] [INFO] Require Maven 2.0.6 to use the following plugin updates: [INFO] maven-jar-plugin ................................................ 2.4 [INFO] maven-shade-plugin ............................................ 1.7.1 [INFO] [INFO] Require Maven 2.2.1 to use the following plugin updates: [INFO] maven-jar-plugin ................................................ 2.6 [INFO] [INFO] Require Maven 3.0 to use the following plugin updates: [INFO] maven-shade-plugin .............................................. 2.3

Usar la etiqueta de requisitos previos en su lugar funciona.


Los requisitos previos están en desuso para Maven 3.X:

http://jira.codehaus.org/browse/MNG-4840 http://jira.codehaus.org/browse/MNG-5297

Además si llamas

mvn versions:display-plugin-updates

no está comenzando un ciclo de vida, mientras que la configuración de su complemento-ejecutor-maven está vinculada al ciclo de vida.

Además, debe fijar todas las versiones de los complementos que está utilizando en su compilación.

Y una cosa muy importante (extracto de las preguntas frecuentes):

La etiqueta de requisitos previos se diseñó para ser utilizada por herramientas como complementos. Funcionará para proyectos regulares, pero no se hereda de sus hijos. Si se establece en un reactor principal, Maven hará la verificación. Sin embargo, si se construye uno de los hijos, no se realiza la comprobación. El complemento del implementador está diseñado para permitir el control centralizado sobre el entorno de compilación desde un solo "super-pom", y para permitir una mayor flexibilidad en la especificación de la versión al admitir rangos.

Esto significa que solo si sus complementos en desarrollo cumplen con los requisitos previos, tiene un sentido limitado el mejor uso de la ruta de maven-enforcer-plugin. Para el proyecto de desarrollo habitual, use la forma de configuración de maven-enforcer-plugin para forzar versiones particulares de Maven.

Para mantenerme informado sobre la actualización de los complementos, puedo recomendarme para suscribirme a la lista de correo de Anuncios o si desea obtener una buena descripción general, consulte la página de complementos .


Para evitar este mensaje utilizo la última versión de las versiones-maven-plugin

mvn org.codehaus.mojo:versions-maven-plugin:2.7:display-plugin-updates


Parece que este problema ha sido reportado here (los créditos van a Aleksandr M por encontrar esto).

Aparentemente, el objetivo de visualización de dependencia dependiente se basa en el elemento de prerequisites para averiguar la versión de Maven requerida por el proyecto actual e ignora totalmente el complemento de ejecución, aunque la etiqueta de requisitos previos no debe usarse normalmente, se requiere en orden para conseguir que el complemento de dependencia se comporte como se espera.