tutorial proyecto mvn español ejecutar desde consola compile compilar como comandos maven build maven-plugin buildnumber-maven-plugin

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>



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.