ANT-检索当前任务名称
像这样的ANT任务怎么可能:ANT-检索当前任务名称,ant,reference,task,Ant,Reference,Task,像这样的ANT任务怎么可能: <target name="mytask"> <echo>processing ${blabla}</echo> </target> 正在处理${blabla} 打印处理我的任务 我应该用什么替换blabla?或者这实际上是可能的?任务名称始终由Ant输出到控制台: 以下是一个例子: <project default="test"> <target name="test" depe
<target name="mytask">
<echo>processing ${blabla}</echo>
</target>
正在处理${blabla}
打印处理我的任务
我应该用什么替换
blabla
?或者这实际上是可能的?任务名称始终由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>
我知道它这样做的唯一方法是编写一个ANT任务或按如下方式使用:
<target name="mytask" depends="init">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>
<groovy>
println "processing ${target}"
</groovy>
</target>
println“正在处理${target}”
如果您的版本足够新,能够支持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
,该任务可用于获取属性中的当前目标,然后您可以根据需要使用它。您的用例是什么?您是否只需要在任务开始/完成时打印,因为Ant已经可以这样做了。不,这只是一个示例。我想用目标名称创建一个文件。文件创建者是Ant还是external(读取输出)?您的意思似乎不是target,而是task。这似乎是一个奇怪的要求。您希望知道当前目标的名称,以便可以在同一目标中使用该值来执行某些操作(创建文件)。你正在写目标。它有一个名字。在目标的正文中再次键入名称。为什么您需要在运行时动态发现名称?这回答了您最初的问题,但不是您在注释中更新的实际需求。确实如此。谢谢,但是你的回答没有帮助。
<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>