我参与了一个项目。这个项目使用的是我不熟悉的蚂蚁。我检查了源代码并尝试在最外层目录上运行ant。
在命令行提示符下运行'ant'需要1秒钟,我收到BUILD SUCCESFULL消息。如果我运行'ant all',我会得到一个
BUILD FAILED. Java.io.IOExceptio: Cannot run program "ant": CreateProcess=2, the system cannot find the file specified
然后是一个很长的堆栈跟踪。
项目中的大多数人在使用Windows XP时运行OS-X。
感谢任何帮助或信息:)
修改
<target name="-all-submodules">
<subantlight target="all">
<filelist refid="ordered_build_files"/>
</subantlight>
</target>
在另一个xml文件中
<macrodef name="subantlight">
<attribute name="target"/>
<element name="files" optional="no" implicit="true" description="Filessets/lists of build files"/>
<sequential>
<apply executable="ant" failonerror="true">
<arg value="-f"/>
<srcfile/>
<arg value="@{target}"/>
<files/>
</apply>
</sequential>
</macrodef>
这是在使用“apply executeable ..”命中行时抛出IOException。
更新编辑: 如果我像这样设置绝对路径
<macrodef name="subantlight">
<attribute name="target"/>
<element name="files" optional="no" implicit="true" description="Filessets/lists of build files"/>
<sequential>
<apply executable="MyAbsolutePathHereToAnt.bat" failonerror="true">
<arg value="-f"/>
<srcfile/>
<arg value="@{target}"/>
<files/>
</apply>
</sequential>
</macrodef>
一切正常。
我已将ANT_HOME设置为我的ant目录。我已将JAVA_HOME设置为Java JDK目录。在我的PATH中,我设置了%ANT_HOME%\ bin;%JAVA_HOME%\ bin
调用echo%ANT_HOME%会产生正确的路径。
我在这里看不到错误。
答案 0 :(得分:4)
没有属性的ant调用curent路径上build.xml文件的默认目标。 'ant all'将在同一个构建文件中调用'all'目标。
首先 - 仔细检查默认的蚂蚁目标 - 它是'全部'还是一些不同的东西?我想,默认目标不是你的情况下的'all','all'构建包括一个构建目标,它本身调用ant。这导致了这个问题。
很难从这里看出来,但扫描构建文件中的&lt; ant&gt;一些&lt; target&gt;内的任务。 IO错误有点像违反用户访问权限或在此&lt; ant&gt;附近/内部丢失文件。任务。
修改强>
build.xml以类似
的方式开头<project name="Name" default="compile" basedir="/src">
'default'属性命名默认目标。如果缺少该属性,则执行所有顶级目标(因为ant 1.6),其中应包括所有情况。
如果“适用于其他所有人”,那么“其他人”可能会有不同的环境。查看脚本中的环境变量ant引用(如'env.JAVA_HOME'等)并与实际环境进行比较。也许你找到了一条破碎的道路。
答案 1 :(得分:1)
您的bin
中是否有Ant安装的PATH
目录?如果没有,那就添加它。
看起来all
目标尝试执行Ant(递归)但无法找到它。