为什么Ant不执行我的路径?

时间:2016-03-03 18:43:17

标签: 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/bin"/>
        <arg value=".." />
    </exec>

因为我的cmake安装在这里:

> which cmake
cmake is /usr/local/bin/cmake

但是当我建立时,我得到了这个:

    [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}">

如果重要,我使用Eclipse Mars 4.5.2在OSX上。假设Eclipse在我的路径上使用ant,那就是:

> ant -version
Apache Ant(TM) version 1.9.6 compiled on June 29 2015

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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