ANT-检索当前任务名称



像这样的ANT任务怎么可能:

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

打印processing mytask

我应该用什么替换blabla?或者这实际上是可能的?

如果您的版本足够新,可以支持javascript,那么这可能适用于香草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,该任务可用于获取属性中的当前目标,然后您可以根据需要使用它。

任务名称总是由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:tmpant>ant
Buildfile: c:tmpantbuild.xml
mytask-silent:
mytask-echo:
     [echo] processing
test:
BUILD SUCCESSFUL
Total time: 0 seconds

我知道它做到这一点的唯一方法是编写一个ANT任务或使用一个groovy脚本,如下所示:

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

相关内容

  • 没有找到相关文章

最新更新