2013-04-07 34 views
0

这将是美妙的,如果我可以这样做:能够访问蚂蚁macrodef中封闭目标的“名称”吗?

<macrodef name="process-target"> 
    <attribute name="target" default="?enclosing.target.name?" /> 
    ... 
</macrodef> 


<target name="myTarget> 
    <process-target/> 
</target> 
+0

刚刚发现了类似的回答:http://stackoverflow.com/questions/1427745/how-can-i-get-the-value-of-the-current-target-ant – 2013-04-07 20:30:17

+0

呀看起来像你必须转义蚂蚁并使用Javascript - – peterk 2013-04-08 22:01:48

回答

2

需要使用脚本来访问目标名称如下:

<project name="demo" default="run1"> 

    <macrodef name="process-target"> 
     <sequential> 
      <script language="javascript"> 
      project.setProperty("enclosing.target.name", self.getOwningTarget()); 
      </script> 
      <echo message="${enclosing.target.name}"/> 
     </sequential> 
    </macrodef> 

    <target name="run1"> 
     <process-target/> 
    </target> 

    <target name="run2"> 
     <process-target/> 
    </target> 

</project> 
0

我把这个在这里,因为我想有core ant中的可选属性。

<macrodef name="process-target"> 
    <attribute name="target" default="_not_set_" /> 
    <sequential> 
     <property name="_target_" value="@{target}" /> 
     <script language="javascript"> 
      if(project.getProperty("_target_") == "_not_set_") { 
       project.setProperty("_target_", self.getOwningTarget()); 
      } 
     </script> 
     <echo message="${_target_}"/> 
    </sequential> 
</macrodef>