Java 为什么不是';Ant exec不使用我的路径?

Java 为什么不是';Ant exec不使用我的路径?,java,eclipse,ant,Java,Eclipse,Ant,我的生成文件中有以下行: <property environment="env"/> ... <echo>Path: ${env.PATH}:/usr/local/bin</echo> <exec executable="cmake" searchpath="true" dir="${engine}"> <env key="PATH" path="${env.PATH}:/usr/local/b

我的生成文件中有以下行:

    <property environment="env"/>
    ...
    <echo>Path: ${env.PATH}:/usr/local/bin</echo>
    <exec executable="cmake" searchpath="true" dir="${engine}">
        <env key="PATH" path="${env.PATH}:/usr/local/bin"/>
        <arg value=".." />
    </exec>
但当我建造时,我得到了:

    [echo] Path: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

BUILD FAILED
build.xml:17: Execute failed: java.io.IOException: Cannot run program "cmake" (in directory "engine"): error=2, No such file or directory
鉴于此项工作:

<exec executable="/usr/local/bin/cmake" searchpath="true" dir="${engine}">

实际上,您没有更新
PATH
env变量以包含
/usr/local/bin
。构建文件只是将其附加到回显消息中。要更新变量,可以执行以下操作:

<property environment="env"/>
<exec executable="cmake" searchpath="true" dir="${engine}">
   <env key="PATH" value="${env.PATH}:/usr/local/bin"/>
</exec>


查找cmake时的路径不包含/usr/local/bin。如果找到了cmake,那么它将使用指定的路径值运行。exec下的env元素是给定给子进程的元素,但Ant本身不使用它。在运行ant之前,您需要修改路径,或者指定完整路径。

刚刚遇到了相同的问题。我认为你的解释是正确的。
> ant -version
Apache Ant(TM) version 1.9.6 compiled on June 29 2015
<property environment="env"/>
<exec executable="cmake" searchpath="true" dir="${engine}">
   <env key="PATH" value="${env.PATH}:/usr/local/bin"/>
</exec>