将Git与Ant集成的最佳方式?

时间:2009-05-08 17:46:31

标签: git ant integration

我正在寻找将Git与Ant集成的最佳方法。 Git是否有广泛使用的Ant任务?有没有人有使用Git通过Ant的经验(例如专用任务,执行调用等)?

7 个答案:

答案 0 :(得分:22)

答案 1 :(得分:19)

看起来Git没有一组Ant任务。

This blog讨论了与Git合作的一些基本任务。

答案 2 :(得分:13)

这是通过JGit的Git Ant任务:http://aniszczyk.org/2011/05/12/git-ant-tasks-via-jgit/

答案 3 :(得分:6)

Look at JGit-Ant。不幸的是,jgit-ant任务项目并不是所有主要的git操作,您可以找到其他信息here

对于java开发人员:您可以使用jgit中的this examples轻松编写git-ant-commands。

答案 4 :(得分:5)

看起来git的Ant任务还有一些额外的非官方工作:

我对这些没有经验,但它们看起来比tlrobinson的更加充实。

答案 5 :(得分:0)

使用JGit库和一些<script language="javascript">代码的组合(我使用过Rhino lubrary,但你可以同样使用Groovy等)。

答案 6 :(得分:0)

以前我没有成功地寻找使用Git和Ant的方法。我需要创建一个具有Git分支名称的构建。最后我得出了以下解决方案:

来自真实build.xml文件的摘录:

<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>

文件./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

调用类似于:

ant TARGET options -Dusing.git=

当声明${using.git}时,Ant调用任务-check-git-branch-name来收集分支的名称(如果Git处于分离模式,则收集提交号)并生成带有附加名称的构建Git branch(或commit的hnumber),例如build/TARGET-${git-branch-name}