2012-01-17 10 views
9

Estoy usando Maven 3.0.3 con Git. Utilizo una herramienta de integración (Bamboo) para verificar una rama de código de Git en un directorio. Luego, la herramienta utiliza Maven para ejecutar el ciclo de vida de compilación estándar (compilar, probar, implementar). Lo que quiero es que si mi tarea de implementación Maven tiene éxito, quiero etiquetar la versión de mi código que está desprotegida en Git. ¿Cómo puedo hacer esto de Maven? Cualquier configuración de muestra que pueda proporcionar es muy apreciada.Usando Maven, Git: ¿Cómo etiqueto la última versión de mi código?

Respuesta

5

Use maven scm plugin. Ver tag functionality in advanced features, que debería ser relevante.

Ahora, el soporte de git no viene de la caja, por lo que necesitará una dependencia a maven-scm-provider-gitexe. Además, para superar plexus exception issue, también deberá agregar una dependencia a una versión posterior de plexus.

Esto es lo que funcionó para mí:

<project> 
    <scm> 
     <connection>scm:git:https://[email protected]/my-project.git</connection> 
     <developerConnection>scm:git:https://[email protected]/my-project.git</developerConnection> 
    </scm> 
    <!-- snip --> 
    <build> 
     <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-scm-plugin</artifactId> 
     <dependencies> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-utils</artifactId> 
       <version>2.1</version> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.maven.scm</groupId> 
       <artifactId>maven-scm-provider-gitexe</artifactId> 
       <version>1.2</version> 
      </dependency> 
     </dependencies> 
     <version>1.0</version> 
     <configuration> 
      <tag>test</tag> 
      <connectionType>connection</connectionType> 
     </configuration> 
     <executions> 
      <execution> 
      <id>tag</id> 
      <phase>deploy</phase> 
      <goals> 
      <goal>tag</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    <!-- snip --> 
</project> 
+0

COOL, esto hace lo que yo quiero, aunque cuando lo ejecuto dos veces consecutivas, aparece el error "[ERROR] fatal: tag 'qa_release' ya existe" en la segunda ejecución. Puede que tenga que abrir esto como otra pregunta. – Dave

+0

sí, necesitará algo dinámico (una propiedad) para el nombre de la etiqueta, en este ejemplo es estático. – eis

+0

si la última etiqueta se puede dar como un parámetro de línea de comando, puede simplemente usar $ {parameter.version} y ejecutar maven con -Dparameter.version = v1.2 que luego se usaría. Si se necesita la autogeneración mediante el plugin maven, se requiere cierta lógica adicional. – eis

0

recomiendo el pequeño proyecto de código abierto I' Soy parte de -se llama Quicktag y trabaja con un par de VCSes- https://code.google.com/p/quicktag-maven-plugin. Agregue el complemento y generará una clase Java con campos estáticos que contienen información de compilación.

0

experto de liberación-plugin sólo tiene que declarar el SMC:

<scm> 
    <url>https://github.com/username/repoName</url> 
    <connection>scm:git:git://github.com/username/repoName.git</connection> 
    <developerConnection>scm:git:[email protected]:username/repoName.git</developerConnection> 
    <tag>HEAD</tag> 
</scm> 

generar claves git ssh

https://help.github.com/articles/generating-ssh-keys/

y ejecutar liberación mvn: preparar

más de https://github.com/kevinsawicki/github-maven-example

Cuestiones relacionadas