ANT:使用条件标签,<if> </if>

时间:2011-06-13 21:48:08

标签: ant tags if-statement

我想做这样的事情

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

根据stackoverflow.com上的suggestions,我下载了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 个答案:

答案 0 :(得分:9)

或者,一旦可以在ANT脚本中包含以下行

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

只要ant-contribs在您的路径中,就不需要其他任何内容

此解决方案更清晰,因为一个可以访问所有标签,而不仅仅是手动指定的标签

答案 1 :(得分:5)

以这种方式解决了同样的问题。 我在构建XML文件的开头添加了以下行:

<taskdef resource="net/sf/antcontrib/antlib.xml">
  <classpath>
    <pathelement location="your/path/to/ant-contrib-${version}.jar" />
  </classpath>
</taskdef>

答案 2 :(得分:3)

标准的蚂蚁方式就像=

 <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中安装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 = whatever

[echo] ..starting ProductionBuild

使用拼写输出=&gt; ant - build.xml -Dbuildtype = testt

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

输出ant -f build.xml -Ddummybuild = whatever

[echo] .. is DummyBuild

答案 3 :(得分:3)

我遇到了同样的问题。我通过以下方式解决了问题。 有时这可能是兼容性问题。

  • 右键单击build.xml。
  • 转到“运行方式” - &gt; 2 Ant ...选择Classpath选项卡检查Ant Home版本(有时eclipse选择默认的ant版本)。
  • 如果列出的版本不同,则更改Ant Home Classpath 到C:\ XXXX \ ant \ X.X.X。
  • 最后点击用户条目 - &gt;添加外部JARS ..--&gt;加 ant-contrib.x.x.jar表格C:\ XXXX \ ant \ X.X.X \ ant-contrib \目录。

答案 4 :(得分:1)

在Ant Runtime的“任务”选项卡上,您是否看到“if”任务?

答案 5 :(得分:0)

export ANT_HOME=/path/to/ant/apache-ant-1.8.2 在我正确设置ANT_HOME之前,我无法让它工作。 Java继续挑选安装在盒子上的另一只蚂蚁。