使用Ant执行绝对路径可以工作,但使用相对路径无法工作。

8

我在我的Ant脚本中有以下片段。它可以正常执行:

<exec executable="C:\test\foo\programName.exe" />

但是当我尝试通过设置目录来执行它时,就像这样:
<exec executable="programName.exe"
  dir="C:\test\foo\" />

我得到的是:
执行失败:java.io.IOException: 无法运行程序“programName.exe” (在目录“C:\test\foo”中): CreateProcess错误=2,系统找不到指定的文件
请帮忙!为什么在单独指定目录时它不能工作?

'C:\test\foo' 不是相对路径。您可能需要更正问题。 - Gleb
编辑过。最终我需要使用相对路径使其正常工作。这个不能正常工作的事实让我感到震惊。 - Cuga
3个回答

6

添加 resolveexecutable 属性:

<exec executable="programName.exe" 
  resolveexecutable="true"
  dir="C:\test\foo\" />

resolveexecutable 当这个属性为true时,可执行文件的名称首先根据项目basedir解析,如果不存在,则根据指定的执行目录解析。在Unix系统上,如果您只想允许用户路径中的命令执行,请将其设置为false。自Ant 1.6版本以来,默认值为false。


3
我最终选择了这个方案:
<exec executable="${basedir}\myexefile.exe}" />

1

试试这个:

<property name="prog.dir" value="C:/test/foo" />
<exec executable="${prog.dir}/programName.exe"/>

看起来你执行程序的目录必须在你的构建路径中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接