如何告诉ANT-exec,git可执行文件的位置

我正在尝试从ANT运行git clone。 但似乎ant不能findgit可执行文件。 我曾尝试以下选项。

<exec executable="/opt/freeware/bin/git"> <exec executable="/usr/bin/git"> <exec executable="git"> 

更强大的选项是使用jgit ANT任务:

 <project name="demo" default="clone"> <target name="bootstrap"> <mkdir dir="${user.home}/.ant/lib"/> <get dest="${user.home}/.ant/lib/jgit.jar" src="http://search.maven.org/remotecontent?filepath=org/eclipse/jgit/org.eclipse.jgit/3.1.0.201310021548-r/org.eclipse.jgit-3.1.0.201310021548-r.jar"/> <get dest="${user.home}/.ant/lib/jgit.ant.jar" src="http://search.maven.org/remotecontent?filepath=org/eclipse/jgit/org.eclipse.jgit.ant/3.1.0.201310021548-r/org.eclipse.jgit.ant-3.1.0.201310021548-r.jar"/> <get dest="${user.home}/.ant/lib/jsch.jar" src="http://search.maven.org/remotecontent?filepath=com/jcraft/jsch/0.1.50/jsch-0.1.50.jar"/> </target> <target name="clone"> <taskdef resource="org/eclipse/jgit/ant/ant-tasks.properties"/> <git-clone uri="https://github.com/myproject/myrepo.git" dest="build/myrepo" branch="master"/> </target> <target name="clean"> <delete dir="build"/> </target> </project> 

笔记:

  • “bootstrap”任务将下载jgit jar。 只需要运行一次。

你想把位置抽象成一个属性。

 <property name="git.executable" value="/usr/bin/git" /> 

然后在你的exec指定该属性

 <exec executable="${git.executable}"> 

这将允许其他人从命令行指定不同的位置:

ant -Dgit.executable=/usr/local/bin/git或者更好的是在一个user.properties文件中被源代码控制忽略,但被导入到你的build.xml

这就回答了你的问题,但是我想提一下,就像跨越流,把你的源代码控制系统引用到你的构建中。 你希望这些问题是分开的。 构建应该是源代码控制不可知的。