2012-01-18 12 views
5

Veo preguntas como How to get revision number from subversion using maven?, pero ¿hay algún estándar (de hecho o de otro tipo) para qué campos reales usar en el manifiesto, para la versión # y para el repositorio URL (es decir, que muestra que está en el tronco frente a una rama) ? He visto Implementación-Versión utilizada, con y sin una "r" inicial (para revisión), he visto Implementación-Compilación: también se usa.¿Mejores prácticas para incrustar el número de versión de SVN en el manifiesto jar de Java?

editar He eliminado la etiqueta maven, que no debería haber estado allí. Mi pregunta es sobre el contenido del contenedor, no sobre las herramientas per se.

+0

No existen normas que yo sepa. Toda empresa/desarrollador parece tener una opinión sobre cómo administrar los números de revisión, sin importar cómo registrar y describir esa revisión :-) –

+1

Es posible que desee considerar el uso de un archivo que no sea (o al menos además del) manifiesto si alguna vez quiere leer el número de revisión programáticamente. La lectura de MANIFEST.MF desde el interior de la JVM es realmente un problema y puede ser inconsistente de un entorno a otro si la jerarquía del cargador de clases cambia en absoluto. –

+0

vea también: http://stackoverflow.com/questions/7670602/conventions-for-additional-content-of-the-manifest-mf-file –

Respuesta

2

Desafortunadamente, los manifiestos de jar por sí mismo no tienen ningún estándar para la numeración de versiones.

Pero, en realidad, hay otra forma estándar de actualizar el número de revisión automáticamente. Puede usar svn:keywords para obtener el número de revisión actual en sus archivos después de cada confirmación. Hay una propiedad $Revision$ para la sustitución de revisión y $HeadURL$ para la sustitución de la URL del repositorio. Sólo tiene que poner siguiente cadena en el archivo y colocar este archivo bajo control de versiones:

$Revision$ $HeadURL$ 

Si crea manifiesta sobre la marcha con Maven, yo recomendaría poner siguiente contenido en version.properties archivo:

revision=$Revision$ 
repourl=$HeadURL$ 

a continuación se incluyen en en pom.xml con la declaración (experto debe tener propiedades Plugin habilitados):

<plugins> 
    <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-1</version> 
    <executions> 
     <execution> 
     <phase>initialize</phase> 
     <goals> 
      <goal>read-project-properties</goal> 
     </goals> 
     <configuration> 
      <files> 
      <file>version.properties</file> 
      </files> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Y entonces usted será capaz de poner el número de revisión y el URL de recompra al manifiesto:

<manifest> 
    <attribute name="Revision" value="${revision}" /> 
    <attribute name="Repository URL" value="${repourl}" /> 
</manifest> 

Por favor, también tenga en cuenta que tendrá que explicitly enable svn:keywords utilizando las propiedades de subversión con el fin de obtener $Revision$ y $HeadURL$ sustituido en su archivo con valores reales. Si decide utilizar version.properties, deberá ejecutar el siguiente comando:

svn propset svn:keywords Revision version.properties 
svn propset svn:keywords HeadURL version.properties 
+0

gracias, una corrección es que debería ser "Revisión \ HeadURL" en lugar de "Id" en la propset. Sin embargo, esa $ Revision solo incluye la versión de version.properties (ver: http://svnbook.red-bean.com/en/1.7/svn.advanced.props.special.keywords.html "where's globalrev") Sin embargo, el $ HeadURL $ no cambia a menudo (a menos que svn cambie un subdirectorio). Por lo tanto, debería considerar utilizar HeadURL y no ignorar las palabras clave por completo. Gracias. –

+1

@Steven R. Loomis: Tienes razón. Editado – altern

Cuestiones relacionadas