2010-05-26 3 views
3

Я участвовал в проекте. В этом проекте используется муравей, с которым мне не комфортно. Я проверил исходный код и попытался запустить муравьев в самом внешнем каталоге.«Ant all» не работает для меня

Запуск «муравей» в командной строке требует 1 секунду, и я получаю сообщение BUILD SUCCESFULL. Если я запускаю «муравей все», я получаю

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, когда он попадает в линию " применить выполнимый .. ".

ОБНОВЛЕНО EDIT: Если я установить абсолютный путь, как это

<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 в каталог муравьев. Я установил JAVA_HOME в каталог Java JDK. В моем PATH я установил% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Вызов echo% ANT_HOME% производит правильный путь.

Я не вижу, что я нахожусь во время неправильного здесь.

+0

Почему ваши сотрудники не могут помочь вам с этой проблемой? Ммм ??? –

+0

Его очень маленькая компания без офисов, поэтому ее трудно устранить проблему. Плюс большинство использует OS-X. Tbh Я просто ненавижу быть новым раздражающим программистом, который ничего не может сделать правильно. Настройка ant up рассматривается как базовый навык. –

+0

вы можете добавить ' $ {env.PATH}' прямо перед заданием и посмотреть, действительно ли ваш ant.bat находится на пути. И вы можете попытаться установить исполняемый атрибут «ant.bat», а не только «ant». –

ответ

4

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

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

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

EDIT

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

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

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

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

+0

Спасибо за помощь! Я не уверен, как проверить, является ли «все» целевой мутантом по умолчанию. Это была команда, которую мне сказали использовать. Я попробовал другие, и они не смогли. Вы правы, что он вызывает цель сборки, которая сама по себе вызывает муравьев. Его трудно понять синтаксис ant, но у меня есть чувство, что вы правы в отношении некоторых недостающих файлов. Но это не имеет смысла, поскольку он работает для всех остальных:/ –

+0

Хорошо, я видел ваш обновленный ответ. По умолчанию это не «все», это указывает на цель «личного помощника». То есть. он начинается с символа '-', поэтому я не могу вызвать его из командной строки. –

+0

... но если вам нужна цель «all», вам нужно исправить/изменить среду. Или сценарий. –

1

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

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

+0

Да, у меня есть. Он выполняет муравей, но я не уверен, может ли он это найти или нет. –

Смежные вопросы