我正在尝试从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>
笔记:
你想把位置抽象成一个属性。
<property name="git.executable" value="/usr/bin/git" />
然后在你的exec
指定该属性
<exec executable="${git.executable}">
这将允许其他人从命令行指定不同的位置:
ant -Dgit.executable=/usr/local/bin/git
或者更好的是在一个user.properties
文件中被源代码控制忽略,但被导入到你的build.xml
这就回答了你的问题,但是我想提一下,就像跨越流,把你的源代码控制系统引用到你的构建中。 你希望这些问题是分开的。 构建应该是源代码控制不可知的。