将Git与Ant集成的最佳方法是什么?
我正在寻找将Git与Ant集成的最佳方法。 Git有一个广泛使用的Ant任务吗? 有没有人有任何使用Git通过Ant的经验(例如专用任务,执行调用等)?
看起来不像Git有一套Ant任务。
这个博客谈到了一些与Git合作的基本任务。
Ant支持exec命令 ,您可以使用该命令将任何命令(包括Git)传递到命令行执行。 你可以随时回避。
这里是Git Ant任务通过JGit: http : //aniszczyk.org/2011/05/12/git-ant-tasks-via-jgit/ 。
看看JGit-Ant 。 不幸的是, jgit-ant任务项目并不是所有主要的git动作,你可以在这里find更多的信息。
对于java开发人员来说:在这个例子中,你可以使用jgit轻松地编写git-ant-commands。
看起来好像还有一些额外的,非官方的工作在Ant任务上完成:
- http://github.com/newtriks/Ant-Funk (和博客文章http://www.newtriks.com/?p=910 )
- http://github.com/FrancisVarga/ant-git-macros
我没有这方面的经验,但他们似乎比tlrobinson更丰富。
使用JGit库与一些<script language="javascript">
代码(我使用Rhino Lubrary,但你可以同样使用Groovy等)的组合。
在前一段时间,我没有find准备好使用的方式来整合Git和Ant。 我需要使用Git分支的名字创build一个构build的可能性。 最后我来到了以下解决scheme:
真正的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分支(或提交的hnumber),例如build/TARGET-${git-branch-name}
。