ANT - 检索当前任务名称

时间:2012-03-28 12:07:13

标签: ant reference task

ANT这样的任务怎么样:

<target name="mytask">
  <echo>processing ${blabla}</echo>
</target>

打印processing mytask

我应该用blabla取代什么?或者这实际上甚至可能?

3 个答案:

答案 0 :(得分:4)

如果你的版本已经足够包含javascript支持,那么这可能适用于vanilla Ant。

<scriptdef name="currenttarget" language="javascript">
    <attribute name="property"/>
    <![CDATA[
    importClass( java.lang.Thread );

    project.setProperty(
        attributes.get( "property" ),
        project.getThreadTask(
            Thread.currentThread( ) ).getTask( ).getOwningTarget( ).getName( ) );
    ]]>
</scriptdef>

<target name="foobar">
    <currenttarget property="my_target" />
    <echo message="${my_target}" />
</target>

scriptdef设置一个任务currenttarget,可用于获取属性中的当前目标,然后您可以根据需要使用该目标。

答案 1 :(得分:0)

任务名称始终由Ant输出到控制台:

以下是一个例子:

<project default="test">

    <target name="test" depends="mytask-silent, mytask-echo"/>

    <target name="mytask-echo">
        <echo>processing</echo>
    </target>

    <target name="mytask-silent"/>

</project>

这是输出:

C:\tmp\ant>ant
Buildfile: c:\tmp\ant\build.xml

mytask-silent:

mytask-echo:
     [echo] processing

test:

BUILD SUCCESSFUL
Total time: 0 seconds

答案 2 :(得分:0)

我知道这样做的唯一方法是编写ANT任务或使用groovy script,如下所示:

<target name="mytask" depends="init">
    <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>

    <groovy>
        println "processing ${target}"
    </groovy>
</target>