“蚂蚁全部”不适合我

时间:2010-05-26 11:50:20

标签: java ant

我参与了一个项目。这个项目使用的是我不熟悉的蚂蚁。我检查了源代码并尝试在最外层目录上运行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%会产生正确的路径。

我在这里看不到错误。

2 个答案:

答案 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(递归)但无法找到它。