Solución:
¿Existe una forma sencilla de reescribir una entrada de propiedad de Maven a un valor específico?
Desde versión 2.5
nosotros podemos usar set-property
(documentación):
mvn versions:set-property -Dproperty=your.property -DnewVersion=arbitrary_value
Como se documenta, el set-property
goal no realiza ningún ‘control de cordura’ en el valor que especifique, por lo que siempre debería funcionar, pero debe usarlo con cuidado.
El parámetro newVersion está mal documentado (como la mayoría de este complemento). Al verificar las pruebas de integración, veo que se necesita un rango de versión de Maven, no un número de versión simple. Además, no le permite proporcionar ningún valor; debe ser uno válido que Maven pueda resolver. El parámetro sería mejor si se llamara constrainRange
Para cualquier otra persona en el futuro, intente esto:
mvn versions:update-property -Dproperty=frontend.version -DnewVersion=[0.13.2]
Si necesita actualizar a una instantánea, asegúrese de configurar la propiedad allowSnapshots
a la verdad
mvn versions:update-property -Dproperty=frontend.version -DnewVersion=[0.13.2] -DallowSnapshots=true
Cómo actualizar la propiedad en POM existente:
Intente usar el filtrado en maven-resource-plugin:
- especificar la versión en el archivo de propiedades;
- agregue un filtro personalizado con la ruta a este archivo (en el niño pom.xml, donde se debe inyectar la dependencia);
- actualizar la versión en el archivo de propiedades;
- ejecutar build.
Ventajas:
- deberia de funcionar;
- la versión se especifica una sola vez;
- el archivo de propiedades se puede agregar bajo el control de versiones;
- process-resources es uno de los primeros pasos del ciclo de vida de Maven.
Desventajas:
- bien, pom.xml todavía usa marcador de posición;
- trabajo adicional para actualizar automáticamente el archivo de propiedades desde la compilación inicial (demasiado complicado, supongo que debería haber soluciones más fáciles).
Cómo proporcionar la propiedad en tiempo de construcción:
Puede especificar cualquier propiedad por parámetro de construcción.
Por ejemplo, tengo propiedad en mi pom.xml igual que:
<properties>
<build.date>TODAY</build.date>
</properties>
Para cambiarlo durante la compilación, simplemente uso el parámetro:
mvn compile -Dbuild.date=10.10.2010
Estoy bastante seguro de que también funcionará para la versión. Además, los hijos heredan las propiedades de los proyectos de nivel superior.