ANT: использование условных тегов <IF> - PullRequest
10 голосов
/ 14 июня 2011

Я хотел бы сделать что-то вроде этого

<target name="clean" description="clean">
    <if>
        <available file="${build}" type="dir" />
        <then>
            <delete dir="${build}" />
        </then>
    </if>
</target>

В соответствии с предложениями , найденными на stackoverflow.com, я скачал ant-contrib-1.0b3.jar и вставил его в мой путь

Classpath

Кроме того, в конфигурации Ant Build в classpath у меня есть enter image description here

Когда я запускаю свой скрипт ANT, я все равно получаю

BUILD FAILED
C:\Repositories\blah\build.xml:60: Problem: failed to create task or type if
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.

Что мне не хватает? Пожалуйста, сообщите

Ответы [ 6 ]

9 голосов
/ 14 июня 2011

Альтернативно, однажды можете включить следующую строку в ваш скрипт ANT

<taskdef resource="net/sf/antcontrib/antlib.xml" />

Пока ant-contribs находится на вашем пути, больше ничего не нужно

Это решение немного чище, поскольку один получает доступ ко ВСЕМ тегам, , а не только к указанным вручную

5 голосов
/ 05 февраля 2014

Та же проблема решена таким образом.Я помещаю в начале строительного XML-файла следующие строки:

<taskdef resource="net/sf/antcontrib/antlib.xml">
  <classpath>
    <pathelement location="your/path/to/ant-contrib-${version}.jar" />
  </classpath>
</taskdef>
3 голосов
/ 29 октября 2013

У меня такая же проблема. Я решил следующим образом. Иногда это может быть проблемой совместимости.

  • Щелкните правой кнопкой мыши на build.xml.
  • Перейдите в «Run As» -> 2 Ant ... Выберите вкладку Classpath, проверьте версию Ant Home (иногда eclipse выбирает версию ant по умолчанию).
  • Если указанная версия отличается, измените Ant Home Classpath в C: \ XXXX \ ant \ X.X.X.
  • Наконец, нажмите на Записи пользователя -> Добавить внешние JARS ..--> Добавить ant-contrib.x.x.jar форма C: \ XXXX \ ant \ X.X.X \ ant-contrib \ directory.
3 голосов
/ 14 июня 2011

Стандартный способ муравья будет выглядеть примерно так =

 <target name="check">
  <condition property="delbuild">
    <available file="${build}" type="dir"/>
  </condition>
 </target>

 <target name="delbuild" depends="check" if="delbuild">
 <delete dir="${build}"/>
    <!-- .. -->
 </target>

Фрагмент с Ant Plugin Flaka , недавней альтернативой antcontrib. Установка в Eclipse как обычно через
Настройки | Муравей | Время выполнения | Глобальные записи | ant-flaka-1.02.-1.02.jar =

<project xmlns:fl="antlib:it.haefelinger.flaka">
  <!-- some standalone if construct -->
  <fl:when test=" '${build}'.isdir ">
    <delete dir="${build}"/>
  </fl:when>

    <!-- some if/then/else construct -->
    <fl:choose>
     <!-- if -->
     <when test=" '${buildtype}' eq 'prod' ">
        <!-- then -->
        <echo>..starting ProductionBuild</echo>
     </when>
     <when test=" '${buildtype}' eq 'test' ">
        <!-- then -->
    <echo>..starting TestBuild</echo>
   </when>
    <!-- else -->
     <otherwise>
      <fl:unless test="has.property.dummybuild">
       <fail message="No valid buildtype !, found => '${buildtype}'"/>
      </fl:unless>
        <echo>.. is DummyBuild</echo>
     </otherwise>
    </fl:choose>
</project>

вывод с ant -f build.xml -Dbuildtype = prod или
ant -f build.xml -Dbuildtype = prod -Ddummybuild = что угодно

[echo] ..starting ProductionBuild

вывод с typo => ant - build.xml -Dbuildtype = testt

BUILD FAILED
/home/rosebud/workspace/AntTest/build.xml:21: No valid buildtype !, found => 'testt'

вывод с ant -f build.xml -Ddummybuild = что угодно

[echo] .. is DummyBuild
1 голос
/ 14 июня 2011

На вкладке задач для среды выполнения Ant вы видите задачу «если»?

0 голосов
/ 08 июня 2018

export ANT_HOME=/path/to/ant/apache-ant-1.8.2 Я не мог заставить его работать, пока я не настроил ANT_HOME должным образом.Ява продолжала выбирать другого муравья, установленного на коробке.

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