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

时间:2013-11-25 14:20:33

标签: git unix ant aix

我正在尝试从ANT运行git clone。但似乎ANT无法找到git可执行文件。我试过以下选项。

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

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

<exec executable="git">

2 个答案:

答案 0 :(得分:2)

更强大的选项是使用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。只需要运行一次。

答案 1 :(得分:1)

您希望将该位置抽象为属性。

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

然后在exec中指定该属性

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

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

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

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