2012-01-24 17 views
15

Estoy usando un sistema de control de versiones que está representado por abbuild donde a es la versión general (será 0 para versiones prototipo, alfa y beta, 1 para versión principal), b es la versión de hitos (en la línea de representar las etapas proto, alfa, beta) y la construcción representa literalmente la cantidad de veces que se ha compilado el proyecto.Incrementando automáticamente un número de compilación en un proyecto Java

Por el momento, tengo la aplicación leída de un archivo de texto, incremente el número y guarde en un archivo de texto cuando la aplicación se ejecuta con un indicador de depuración establecido.

Estoy buscando una forma más "correcta" de hacerlo usando Java y Netbeans. ¿Hay alguna forma en que pueda inyectar un numberer de construcción en el proceso de compilación en alguna parte? preferiblemente guardando el número en un archivo fuente que se envía con el proyecto, en lugar de confiar en la existencia de un archivo cercano.

+0

¿Por qué la compilación tiene que ser un número de serie?¿Por qué un hash de los archivos creados no es suficiente? –

+2

Ver http://stackoverflow.com/questions/690419/build-and-version-numbering-for-java-projects-ant-cvs-hudson – andersoj

+4

@MikeSamuel Generalmente porque los buildnumbers incrementales son más fáciles para las personas ('this build is newer ') –

Respuesta

10

Hay un par de plugins de Maven populares que logran esta hazaña:

El Maven lanzamiento Plugin del Proyecto Maven Apache es un poco overkill para simplemente actualizando el número de versión. Por lo tanto use the latter plugin para crear un número de versión (en forma de MAJOR.MINOR.BUILD; por ejemplo, 3.1.4 donde 4 es auto-incrementales) como sigue:

  1. Abrir el archivo del proyecto pom.xml.
  2. Incluir el plugin dentro de la sección build (después de la sección dependencies):
<scm> 
    <connection>scm:svn:http://127.0.0.1/dummy</connection> 
    <developerConnection>scm:svn:https://127.0.0.1/dummy</developerConnection> 
    <tag>HEAD</tag> 
    <url>http://127.0.0.1/dummy</url> 
    </scm> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>buildnumber-maven-plugin</artifactId> 
     <version>1.4</version> 
     <executions> 
      <execution> 
      <id>buildnumber</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>create</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <format>{0,number}</format> 
      <items> 
      <item>buildNumber</item> 
      </items>      
      <doCheck>false</doCheck> 
      <doUpdate>false</doUpdate> 
      <revisionOnScmFailure>unknownbuild</revisionOnScmFailure> 
     </configuration> 
     </plugin>  
    </plugins> 
    <finalName>${project.artifactId}-${project.version}.${buildNumber}</finalName> 
    </build> 
  1. Asegúrese de que el pom.xml define la versión mayor y menor en el elemento de versión cerca la parte superior del archivo. Por ejemplo:
<version>3.1</version> 
  1. Guardar el archivo pom.xml.
  2. Reconstruye el proyecto.

El número de versión debe aumentar.


El plugin requiere un repositorio de administración de código configurado elemento (<scm>). Si no le importa el número de registro del repositorio, use un dummy scm. Esto se puede usar para incluir el número de revisión del repositorio, que es un ejercicio para el reader.

1

Puede usar el número de confirmación de git de la sucursal actual como el número de compilación. Use esta línea de comando para obtener el recuento de compromisos: git rev-list HEAD --count.

La integración con las herramientas de compilación será bastante sencilla. Si está usando Gradle, puede usar este complemento: https://github.com/rockerhieu/Versionberg/

Cuestiones relacionadas