Información del build con Maven

De Dos Ideas.
Saltar a: navegación, buscar

Usando Maven es posible obtener información del build para ser usada en tiempo de ejecución. La idea general es guardar esta información (hora del build, versión del repositorio de código, etc.) en un archivo de texto, que luego la aplicación puede usar en tiempo de ejecución.

Durante el build, Maven permite filtrar los archivos de recursos y reemplazar placeholders con valores de variables de Maven. De esta manera, la estrategia será crear un archivo .properties con placeholders, que luego Maven se encargará de reemplazar al momento de hacer el build.

Ejemplo de uso

Vamos a usar un archivo projectInfo.properties que tendrá información general del build e información sobre los fuentes en el SVN.

El archivo projectInfo.properties

Este archivo de propiedades está ubicado junto al resto de los recursos del proyecto, para que sea accesible en tiempo de ejecución por la aplicación.

project.version=${pom.version} project.build.date=${project.build.timestamp}

project.svn.repository=${project.svn.repository} project.svn.path=${project.svn.path} project.svn.revision=${project.svn.revision} project.svn.mixedRevisions=${project.svn.mixedRevisions} project.svn.committedRevision=${project.svn.committedRevision} project.svn.committedDate=${project.svn.committedDate} project.svn.status=${project.svn.status} project.svn.specialStatus=${project.svn.specialStatus}

Configuración de Maven

Es necesario configurar Maven, con los siguientes pasos:

  1. Activar el filtrado de recursos, para que cambie los placeholders.
  2. Activar el módulo de información de SVN.
  3. Crear una variable explícita con la hora del build, por un bug en Maven.

El archivo pom.xml queda: <project>

   ...
   <build>
       <resources>
           <resource>
               <directory>src/main/resources</directory>
               <filtering>true</filtering>
           </resource>
       </resources>
       <plugins>
           ...
           <plugin>
               <groupId>com.google.code.maven-svn-revision-number-plugin</groupId>
               <artifactId>maven-svn-revision-number-plugin</artifactId>
               <version>1.7</version>
               <executions>
                   <execution>
                       <goals>
                           <goal>revision</goal>
                       </goals>
                   </execution>
               </executions>
               <configuration>
                   <entries>
                       <entry>
                           <prefix>project.svn</prefix>
                       </entry>
                   </entries>
               </configuration>
           </plugin>
       </plugins>
   </build>
   <properties>
       <project.build.timestamp>${maven.build.timestamp}</project.build.timestamp>
       <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
   </properties>

</project>

Al ejecuta

Ver también