you than running rather provided plugin perhaps jre jdk compiler artifactid are java maven maven-3 maven-plugin

java - than - maven-compiler-plugin version



VersiĆ³n del plugin de Maven no especificada (3)

Hay algunos pasos que maven sigue para resolver la versión del complemento. Está documentado en la sección Resolving Plugin Versions de http://maven.apache.org/guides/introduction/introduction-to-plugin-registry.html

Acabo de notar que la versión del plugin es opcional en maven. Todavía puedo construir mi módulo sin especificarlo. Tomemos un ejemplo con maven-bundle-plugin.

<plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> .... </plugin>

He escrito un pom.xml simple sin un padre para probar esto, por lo que pluginManagement no está involucrado. También he comprobado el super super pom-4.0.0.xml en maven-model-builder para confirmar que maven-bundle-plugin no está allí. Esta versión del plugin no está especificada en ninguna parte.

¿Cómo determina Maven qué versión tomar?


Si verifica el archivo maven-metadata.xml que se encuentra en su repositorio remoto (por ejemplo, Nexus) junto con el artefacto del complemento, verá algo como esto:

<metadata> <groupId>com.company.maven.plugins</groupId> <artifactId>some-maven-plugin</artifactId> <versioning> <latest>0.3.6</latest> <release>0.3.6</release> <versions> <version>0.1</version> <version>0.2</version> <version>0.3.0</version> <version>0.3.1</version> <version>0.3.2</version> <version>0.3.4</version> <version>0.3.5</version> <version>0.3.6</version> </versions> <lastUpdated>20140414212942</lastUpdated> </versioning> </metadata>

Creo que Maven puede usar el valor <latest> para decidir qué complemento descargar si no se especifica la versión.

Maven 3.0.x emite advertencias sobre las versiones de complementos que faltan y dice que "las versiones futuras de Maven pueden negarse a construir POM con formato incorrecto como estos" o algo por el estilo. Siempre debes especificar las versiones del complemento para que tu compilación sea reproducible. De lo contrario, puedes terminar con algunos errores muy difíciles de encontrar.


Notas de compatibilidad de Maven 3.x :

Resolución automática de la versión del complemento

Cuando se invocó un complemento sin una versión explícita en el POM o en la línea de comandos, Maven 2.x se usó para seleccionar la última versión disponible donde la última versión podría ser una versión o una instantánea. En aras de la estabilidad, Maven 3.x prefiere la última versión de lanzamiento sobre la última versión de instantánea.

Dada la amenaza de compilaciones no reproducibles impuestas por la resolución automática de la versión del complemento, esta función está programada para su eliminación en lo que respecta a las declaraciones de complementos en el POM. Los usuarios de Maven 3.x encontrarán una advertencia cuando se detecten versiones de complementos faltantes para alentar la adición de versiones de complementos al POM o uno de sus POM principales. La regla Enforcer requirePluginVersions se puede usar, además, verifique si faltan versiones de complementos en el POM.