«Муравей все» не работает для меня - PullRequest
3 голосов
/ 26 мая 2010

Я участвовал в проекте. В этом проекте используется муравей, который мне не нравится. Я проверил исходный код и попытался запустить 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 и затем длинная трассировка стека.

Большинство людей в проекте используют OS-X, а я использую Windows XP.

Любая помощь или информация приветствуется:)

EDIT:

<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>

Это то, что выдает IOException, когда оно попадает в строку с "apply executeable ..".

ОБНОВЛЕННОЕ РЕДАКТИРОВАНИЕ: Если я установлю абсолютный путь, как это

<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 ]

4 голосов
/ 26 мая 2010

ant без атрибутов вызывает цель по умолчанию в файле build.xml по пути curent. 'ant all' вызовет цель 'all' в одном и том же файле сборки.

Во-первых, дважды проверьте стандартную цель муравья - это все или что-то другое? Я предполагаю, что целью по умолчанию не является «all» в вашем случае, а «all» включает в себя цель сборки, которая сама вызывает ant. И это вызывает проблему.

Сложно сказать, но просканируйте файл сборки на предмет задачи внутри некоторого . Ошибка ввода-вывода пахнет немного как нарушение прав доступа пользователя или отсутствующих файлов рядом с / в этой задаче.

EDIT

build.xml начинается с чего-то вроде

<project name="Name" default="compile" basedir="/src">

Атрибут 'default' определяет цель по умолчанию. Если атрибут отсутствует, все цели верхнего уровня выполняются (начиная с муравья 1.6), что должно включать все в вашем случае.

Если это работает «для всех остальных», тогда «все остальные» могут иметь другую среду. Посмотрите на ссылки на переменные среды в скрипте (например, 'env.JAVA_HOME' и т. Д.) И сравните с реальной средой. Может быть, вы найдете сломанный путь.

1 голос
/ 26 мая 2010

У вас есть каталог bin вашей установки Ant в вашем PATH? Если нет, то добавьте его.

Похоже, цель all пытается выполнить Ant (рекурсивно), но не может его найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...