Añadir Fichero con Información de Version con Maven

January 18, 2016
joaquindiez

Siempre he querido tener un fichero en mis procesos de construcción para añadir información sobre la versión, la fecha de compilación etc.

En este ejemplo crearemos un fichero version.txt que incluirá el número de versión y la fecha de Build usando maven.

En primer lugar creamos un fichero version.txt con el siguiente contenido en /main/resources/


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

en el fichero pom.xml

añadimos dentro de las etiqueta build

<build>

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

y el la sección properties del pom.xml añadimos la variable que usamos en version.xml para añadir el timestamp del build

<properties>

…..

<timestamp>${maven.build.timestamp}</timestamp>

  <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>

</properties>


Simplemente con esto al realizar mvn clean package, el jar que se genera contendrá ese fichero.

Pero en mi caso, yo además estoy usando el plugin de maven, assembly para crear un fichero tar, que contiene las librerías y scripts de un Servicio.

el plugin assembly de Maven, necesita de un fichero src/main/assembly/package.xml, cuyo contenido para copiar el fichero version.txt generado es el siguiente.

 

<?xml version=“1.0” encoding=“UTF-8”?>

<assembly>

   <id>bin</id>

   <formats>

       <format>tar</format>

   </formats>

   <fileSets>     

     <fileSet>

        <directory>src/main/resources</directory>

        <outputDirectory>/</outputDirectory>

        <fileMode>0711</fileMode>

          <excludes>

          <exclude>applicationContext.xml</exclude>

            <exclude>version.txt</exclude>

          </excludes>

     </fileSet>

     <fileSet>

         <directory>target</directory>

         <outputDirectory>/lib</outputDirectory>

         <includes>

            <include>*.jar</include>            

         </includes>

     </fileSet>

     <fileSet>

         <directory>target/classes</directory>

         <outputDirectory>/</outputDirectory>

         <includes>

            <include>version.txt</include>            

         </includes>

     </fileSet>

   </fileSets>

   <dependencySets>

      <dependencySet>

         <outputDirectory>/lib</outputDirectory>

         <scope>runtime</scope>

      </dependencySet>

   </dependencySets>

</assembly>

 

 

 

No comments

Leave a Reply

Your email address will not be published. Required fields are marked *