Este dilema se puede tratar de variadas formas, pero nosotros te enseñamos la solución más completa en nuestra opinión.
Solución:
¿Existe una manera simple de reescribir una entrada de propiedad de Maven a un valor específico?
Desde la versión 2.5
nosotros podemos usar set-property
(documentación):
mvn versions:set-property -Dproperty=your.property -DnewVersion=arbitrary_value
Como está documentado, el set-property
goal no realiza ninguna “comprobación 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 (al igual que 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
para true
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 child pom.xmldonde se debe inyectar dependencia);
- actualizar la versión en el archivo de propiedades;
- ejecutar compilación.
ventajas:
- deberia de funcionar;
- la versión se especifica solo una vez;
- el archivo de propiedades podría agregarse 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 propiedad en tiempo de construcción:
Puede especificar cualquier propiedad por parámetro de compilación.
Por ejemplo, tengo una propiedad en mi pom.xml me gusta:
TODAY
Para cambiarlo durante la compilación, simplemente uso el parámetro:
mvn compile -Dbuild.date=10.10.2010
Estoy bastante seguro de que funcionará para la versión también. Además, los hijos heredan las propiedades de los proyectos de nivel superior.