Как написать условную логику, используя 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>