Задача муравья для генерации нескольких целей в разных проектах - PullRequest
1 голос
/ 19 июня 2011

У меня есть цель ant, которая одновременно запускает 3 других проекта, цель сборки ant для junit. Эта цель сборки выполняет все три проекта, даже при сбое любого из проектов. Проблема здесь в том, что если какое-либо одно из сообщений об ошибке сборки не отображается после компиляции цели сборки трех проектов, но этого не происходит, как я могу ее решить?

<target name="mainbuild">
 <antcall target="junit-1">//in different project
 <antcall target="junit-2">//in different project
 <antcall target="junit-3">//in different project
<junitreport todir="./reports">
  <fileset dir="./project-1/reports">
    <include name="TEST-*.xml"/>
  </fileset>
  <fileset dir="./project-2/reports">
    <include name="TEST-*.xml"/>
  </fileset>
  <fileset dir="./project-3/reports">
    <include name="TEST-*.xml"/>
  </fileset>
  <report format="frames" todir="./report/html"/>
</junitreport>
</target>

<target name="junit-1">
.... do somethig 
</target>
<target name="junit-2">
.... do somethig 
</target>
<target name="junit-3">
.... do somethig 
</target>

1) основная сборка запускает 3 проекта, даже если сборка завершилась неудачей в каком-либо из подпроектов, сборка успешных сообщений отображается в конце, этого не должно происходить

2) в случае сбоя при сборке подпроекта должен быть сгенерирован отчет о сборке, чтобы разработчик мог продолжить анализ своей ошибки.

1 Ответ

0 голосов
/ 20 июня 2011

Поскольку вы пояснили, что ваши цели находятся в разных проектах, т.е. в разных файлах сборки, вам придется использовать задачи ant или subant вместо antcall.Задача subant имеет параметр с именем failonerror, который можно установить на false, чтобы сбой не остановил сборку верхнего уровня.Я не знаю, возможно ли передать обратно сборке верхнего уровня информацию о том, что сборка подпроекта действительно провалила свои тесты.

Если все ваши цели были в одном проекте, вы могли бы изменитьваши задачи junit, чтобы они не проваливались при сбое теста, а вместо этого установите свойство, указывающее, что произошел сбой:

<junit failureProperty="test.failed"> ... </junit>

После этого вы можете сделать так, чтобы ваша цель mainbuild провалилась после генерации отчета JUnit:

<fail if="test.failed"> ... </fail>

Я узнал об этом из книги "Муравей в действии".

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