Eclipse: versión del proyecto como parámetro en múltiples files

Estoy desarrollando un proyecto que usa control de versiones:

  1. nombre de la versión está escrito en file POM

  2. También se usa como parte del nombre de file to-be-created .msi que se file_[version].msi : file_[version].msi

  3. Se utiliza en un nombre de service, después de que este proyecto se instala desde .msi Esos parameters se guardan en ubicaciones de la siguiente manera:

    a) .properties file como Spring param: version=0340

    b) en pom.xml <package-version>0340</package-version>

    c) como un <filename><version>.wxs , utilizado por build.xml

    d) también en el file .wxs mencionado .wxs como MsiProductVersion = "3.4.0" (observe los puntos)

¿Hay alguna manera de definir un parámetro en algún otro file de config , que llenaría esos files con los datos adecuados, para mantener la versión en un solo lugar? Ahora es fácil pasar por alto un 340.msi y build un 340.msi que mostrará 330 Service como su nombre. Me resulta difícil, ya que no todos los files pertenecen a un model (como Spring ).

Puede configurar Maven para replace "variables" en los resources. Agregue esto a su POM:

 <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> <resource> <directory>src/test/resources</directory> <filtering>true</filtering> </resource> </resources> ... </build> 

Ahora puede usar ${project.version} y se replaceá con la versión del POM en todos los files debajo de src/main/resources y src/test/resources .

En cuanto a los otros files, puede usar una tarea Ant incorporada en su POM o escribir un pequeño script (Ant, bash, lo que quiera) que lea el POM y cree los otros tres files de las templates.

Otra opción es escribir una unit testings que lea todos los files y se asegure de que contengan los valores correctos. De esta forma, la versión no se actualizará automáticamente, pero a) la versión no cambia con tanta frecuencia (lo que probablemente causa su problema) yb) las testings son mucho más poderosas que lo que puede hacer en un script (pueden, por ejemplo, leer y actualizar files binarys).