2009-05-08 9 views
46

Estoy buscando la mejor manera de integrar Git con Ant. ¿Hay una tarea Ant ampliamente utilizada para Git? ¿Alguien tiene experiencia en usar Git a través de Ant (por ejemplo, tarea dedicada, llamada de ejecutivo, etc.)?¿La mejor manera de integrar Git con Ant?

+2

Una pregunta más detallada es http://stackoverflow.com/questions/2974106/how-to-lookup-the-latest-git-commit-hash-from-an-ant-build-script. Las respuestas allí también pueden ser útiles aquí. – koppor

Respuesta

19

Parece que no hay un conjunto de tareas Ant para Git.

This blog habla de algunas tareas rudimentarias para trabajar con Git.

+1

aquí está Git Ant Tasks a través de JGit http://aniszczyk.org/2011/05/12/git-ant-tasks-via-jgit/ –

+0

Esto solo puede hacer 'git clone',' git init' y 'git checkout '. – zb226

+1

el blog está desactualizado. Actualice el enlace del blog –

21

Ant es compatible con el exec command que puede utilizar para pasar cualquier comando (incluido Git) a la línea de comandos para su ejecución. Siempre puedes recurrir a eso.

6

Look at JGit-Ant. Desafortunadamente el proyecto de tareas jgit-ant no tiene todas las acciones principales de git, puede encontrar información adicional here.

Para desarrolladores de Java: puede escribir fácilmente comandos de git-ant con el uso de jgit como en this examples.

+0

El enlace está roto. – Valentino

0

Utilice una combinación de la biblioteca JGit con algún código <script language="javascript"> (utilicé la función de lubricación de Rhino pero también podía usar Groovy, etc.).

0

Hace tiempo que he buscado sin éxito formas listas para usar para integrar Git y Ant. Necesitaba la posibilidad de crear una compilación con el nombre de la rama de Git. Finalmente llegué a la siguiente solución:

El extracto de la verdadera build.xml archivo:

<target name="-check-git-branch-name" 
    if="using.git" 
    > 
    <exec executable="bash" logError="true" failonerror="true" 
     outputproperty="git-branch-name"> 
     <arg value="./bin/git-branch-name.sh" /> 
    </exec> 
</target> 

Todo el contenido del archivo ./bin/git-branch-name.sh

#!/bin/bash 

# This script is the part of integration GIT to ANT. Once launched it 
# should return the name of the current branch or the current commit (if 
# GIT is the detached HEAD mode). Further the printed name is appended to 
# the name of the resulting directory. To initialize this feature you need 
# to run ANT with the option "-Dusing.git=". 

exec 2>/dev/null 

git rev-parse --abbrev-ref HEAD | grep -v HEAD || git rev-parse HEAD 

Invocación es similar a:

ant TARGET options -Dusing.git= 

Cuando ${using.git} es de clared, Ant llama a la tarea -check-git-branch-name para recopilar el nombre de una rama (o un número de confirmación si Git está en modo separado) y genera la construcción con el nombre adjunto de la rama Git (o hnumber de confirmación), por ejemplo build/TARGET-${git-branch-name}.

Cuestiones relacionadas