1

我是ANT的初学者。

我究竟做错了什么?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>

4

2 回答 2

3

您需要使用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>
于 2012-08-23T16:44:25.540 回答
0

您可以使用宏巧妙地做同样的事情。如果您的目标 get-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>
于 2012-08-28T10:14:45.587 回答