我正在寻找将Git与Ant集成的最佳方法。 Git是否有广泛使用的Ant任务?有没有人有使用Git通过Ant的经验(例如专用任务,执行调用等)?
答案 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}
。