при условии при условии - PullRequest
0 голосов
/ 26 апреля 2011

Я бы хотел выполнить subant при некоторых условиях. что-то вроде:

<if>
<equals value="value1" property="${some.property">
<then>
  <subant target="@{target}" failonerror="true" inheritall="false">
    <buildpath refid="some-ref1" />
  </subant>
</then>
<else>
  <subant target="@{target}" failonerror="true" inheritall="false">
          <buildpath refid="some-ref2" />
  </subant>
</else>
</if>

Но не могу найти способ сделать это. Прочтите руководство по муравьям и погуглите, но решение не найдено.

Спасибо.

Ответы [ 3 ]

1 голос
/ 26 апреля 2011

Я полагаю, что ошибка может заключаться в вашем теге equals. Вместо использования атрибутов 'value' и 'Propery', попробуйте использовать 'arg1' и 'arg2', т. Е .:

<equals arg1="value1" arg2="${some.property}">

Ознакомьтесь с примерами в документе ant-contrib: http://ant -contrib.sourceforge.net / tasks / tasks / if.html .

Если проблема в том, что ваши теги 'if', 'then' и / или 'else' не разрешаются должным образом, возможно, вы пропускаете библиотеки ant-contrib. Ant-contrib изначально не входит в состав ant, но вы можете скачать его здесь: http://sourceforge.net/projects/ant-contrib/files/

Для сайта ant-contrib (http://ant -contrib.sourceforge.net /) вот что вы должны сделать, чтобы установить ant-contrib:

Вариант 1. Скопируйте ant-contrib-0.3.jar в каталог lib вашей установки Ant. Если вы хотите использовать одну из задач в своем собственном проекте, добавьте строки

<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>

в ваш файл сборки.

Вариант 2: Храните файл ant-contrib-0.3.jar в отдельном месте. Теперь вы должны явно указать Ant, где его найти (например, в / usr / share / java / lib):

<taskdef resource="net/sf/antcontrib/antcontrib.properties">
  <classpath>
    <pathelement location="/usr/share/java/lib/ant-contrib-0.3.jar"/>
  </classpath>
</taskdef>
0 голосов
/ 26 апреля 2011

Вы имеете в виду вызов другой цели, если так, то здесь

<if> 
<equals value="value1" property="${some.property">
<then>
<antcall target="@{target}" failonerror="true" inheritall="false">
 </then>
<else>
  <antcall target="@{target}" failonerror="true" inheritall="false">


</else>
</if>
0 голосов
/ 26 апреля 2011

Пожалуйста, посмотрите вверх <target if="${some.property}>.Может потребоваться другая цель с unless.

Если свойство связано с существующим файлом, см. Задача Ant, чтобы проверить, существует ли файл? .Даже если это не ваша главная задача, я уверен, что вы можете получить идею из принятого ответа.

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