proyecto - Complemento del número de compilación de Maven, ¿cómo guardar el número de compilación en un archivo?
maven tutorial pdf (4)
Tengo un proyecto Java que usa Spring Framework y Git y quería mostrar un número de compilación. Encontré el plugin Build Number Maven . Con Git el número de compilación es un hash de Git. Eso me disgusta y pensé que una cita era mucho más expresiva.
Encontré este excelente artículo de blog que explica cómo usar el complemento de compilación con un perfil diferente para SVN y Git. Como solo uso Git, en lugar de crear un nuevo perfil, copié la parte del complemento en mi etiqueta de compilación.
Cuando ejecuto "paquete mvn" me dice:
[INFO] --- buildnumber-maven-plugin:1.0:create (default) @ sherd ---
[INFO] Storing buildNumber: 2011-08-04_21-48_stivlo at timestamp: 1312487296631
Que se ve bien, pero me pregunto, ¿dónde está almacenado? "git status" no detecta ningún archivo nuevo y parece que no está en target / too (target / está en mi .gitignore).
Tal vez tengo que cambiar la configuración para almacenar el número de compilación en un archivo? ¿Cómo puedo usar el valor del número de compilación?
Gracias a la sugerencia de Michael-O, leí el capítulo sobre cómo filtrar archivos de recursos en la Guía de introducción de Maven . He creado un archivo application.properties en src / main / resources / properties / application.properties con el siguiente contenido:
# application properties
application.name=${pom.name}
application.version=${pom.version}
application.build=${buildNumber}
He añadido el siguiente fragmento de código XML en mi sección de compilación:
<resources>
<resource>
<directory>src/main/resources/properties</directory>
<filtering>true</filtering>
</resource>
</resources>
Ahora, cuando llamo desde la línea de comandos "paquete mvn", este archivo de propiedades se guarda en target / classes / properties / application.properties, por ejemplo, con el siguiente contenido:
# application properties
application.name=Sherd Control Panel
application.version=1.0.1-SNAPSHOT
application.build=2011-08-05_05-55_stivlo
Todo funciona bien desde la línea de comandos, pero, suspiro, m2eclipse genera errores de compilación:
05/08/11 6.05.03 CEST: Build errors for obliquid-cp;
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.codehaus.mojo:buildnumber-maven-plugin:1.0:create (default) on project
sherd: Cannot get the branch information from the scm repository :
Exception while executing SCM command.
Por alguna razón, m2eclipse intenta conectarse a mi repositorio, pero no puede porque es un repositorio Git al que se accede con SSH y una clave privada. Me pregunto si puedo decirle a m2eclipse que no se conecte a Git.
Después de investigar más sobre la opción revisionOnScmFailure, configúrela como verdadera y ahora también funciona m2eclipse. Para referencia, aquí está la configuración completa de buildnumber maven plugin que usé (va en pom.xml en la sección build / plugins).
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<revisionOnScmFailure>true</revisionOnScmFailure>
<format>{0,date,yyyy-MM-dd_HH-mm}_{1}</format>
<items>
<item>timestamp</item>
<item>${user.name}</item>
</items>
</configuration>
</plugin>
Almacénelo en un archivo de propiedades filtradas. Consulte Uso de maven para generar el número de versión en un archivo de texto.
La página de documentation dice que los archivos de propiedades se almacenan en ${basedir}/buildNumber.properties
, que se crea cuando se buildnumber:create
fase buildnumber:create
.
No debe establecer la opción revisionOnScmFailure
en true
, no espera un valor booleano. Establézcalo en la cadena de revisión que desee usar cuando SCM no esté disponible, como na
o como esa. No importa para su caso, ya que anula el formato del número de compilación, pero sería más correcto.
Ver los documentos de buildnumber-maven-plugin .
No pude reproducir el problema reportado por el OP. En mi caso, tanto la línea de comandos como el m2eclipse funcionan bien y el archivo se genera correctamente en la carpeta de destino / clases . La respuesta proporcionada por @KasunBG es incorrecta. El buildNumber.properties se genera solo si usa lo siguiente:
<format>{0,number}</format>
<items>
<item>buildNumber</item>
</items>
buildNumber.properties se utiliza para almacenar un número que puede incrementarse. Por esta razón (creo) el complemento no genera este archivo si usa la marca de tiempo / scmVersion, etc.