Как написать условную логику, используя ant-contrib

Я новичок в АНТ.

Что я делаю неправильно? ant-contrib-1.0b3 доступен. Я хотел бы назвать цель по умолчанию следующим образом:

<target name="build">
<if>
 <equals arg1="${config.name}" arg2="foo" />
 <then>
   <depends="get-all-war,..." />
 </then>
 <elseif>
 <equals arg1="${config.name}" arg2="mark" />
 <then>
   <depends="zip-wars, ..." />
 </then>
 </elseif>
 <else>
    <depends="get-all-war, zip-wars, docs, deleteAll" />
 </else>
</if>

2 ответа

Решение

Вы можете делать то же самое, используя макросы. Если ваши цели получают all-all-war, zip-wars, docs, deleteAll, вам потребуется больше времени, чтобы вы могли запустить их параллельно следующим образом:

<target name="build">
  <if>
  <equals arg1="${config.name}" arg2="foo" />
  <then>
    <mGetAllWar/>
  </then>
  <elseif>
  <equals arg1="${config.name}" arg2="mark" />
  <then>
    <mZipWars />
  </then>
  </elseif>
  <else>
    <mRestAllTargets/>
  </else>
</if>

<mGetAllWar>
  <parallel>
    <antcall name="target1">
    <antcall name="target2">
    ... 
  </parallel>
</mGetAllWar>

<mZipWars >
  <parallel>
    <antcall name="target1">
    <antcall name="target2">
    ... 
  </parallel>
</mZipWars >

<mRestAllTargets>
  <parallel>
    <antcall name="target1">
    <antcall name="target2">
    ... 
  </parallel>
</mRestAllTargets>

Вам нужно использовать antcall для выполнения других целей.

<target name="build">
<if>
 <equals arg1="${config.name}" arg2="foo" />
 <then>
   <antcall target="get-all-war" />
   <antcall target="..." />
 </then>
 <elseif>
 <equals arg1="${config.name}" arg2="mark" />
 <then>
   <antcall target="zip-wars" />
   <antcall target="..." />
 </then>
 </elseif>
 <else>
   <antcall target="get-all-war" />
   <antcall target="zip-wars" />
   <antcall target="docs" />
   <antcall target="deleteAll" />
 </else>
</if>
Другие вопросы по тегам