2013-04-07 2 views
0

Было бы замечательно, если бы я мог сделать что-то вроде:Можно ли получить доступ к «имени» входящей цели внутри муравья макродефа?

<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 –

+0

Да выглядит, как вы должны избегать муравей и использовать Javascript - – peterk

ответ

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>