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>