2009-09-15 10 views

Répondre

1

Si vous exécutez fourmi en utilisant la -projecthelp arg:

ant -projecthelp 

vous obtiendrez une liste des principales cibles spécifiées dans le build.xml (ou tout autre fichier de construction comme déclaré sur la ligne de commande).

12

Basé sur the issue vous devez patcher javascript fourmi ou utilisé:

<target name="test"> 
    <script language="javascript"> 
    project.setNewProperty("current_target", self.getOwningTarget()); 
    </script> 
    <echo>${current_target}</echo> 
</target> 
+0

L'utilisation de 'setNewProperty()' traitera $ {current_target} 'comme étant immuable (ce qui fonctionne habituellement avec Ant). Si vous voulez remplacer la valeur de $ {current_target} ', utilisez' setProperty() 'à la place. – Scribblemacher

10

En 1.8.2 ant, vous pouvez utiliser $ {ant.project.invoked-cibles}

Cependant, en regardant la engager les journaux http://svn.apache.org/viewvc?view=revision&revision=663061 Je devine que son disponible depuis 1.7.1

+4

Ceci affiche uniquement les cibles initialement lancées et non la cible dans laquelle vous vous trouvez. –

2

Ma réponse, en utilisant antcontrib

<macrodef name="showtargetname"> 
    <attribute name="property"/> 
    <sequential> 

     <!-- make temporary variable --> 
     <propertycopy name="__tempvar__" from="@{property}"/> 

     <!-- Using Javascript functions to convert the string --> 
     <script language="javascript"> <![CDATA[ 
     currValue = [project-name].getThreadTask(java.lang.Thread.currentThread()).getTask().getOwningTarget().getName(); 
     [project-name].setProperty("__tempvar__", currValue); 
     ]]> 
     </script> 

     <!-- copy result --> 
     <var name="@{property}" value="${__tempvar__}"/> 

     <!-- remove temp var --> 
     <var name="__tempvar__" unset="true"/> 

    </sequential> 
    </macrodef> 

Utilisation:

<showtargetname property="mycurrenttarget"/> 
Questions connexes