0

It would be fantastic if I could do something like:

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


<target name="myTarget>
    <process-target/>
</target>
Mark O'Connor
  • 76,015
  • 10
  • 139
  • 185
peterk
  • 5,136
  • 6
  • 33
  • 47

2 Answers2

2

Need to use a script to access the target name as follows:

<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>
Mark O'Connor
  • 76,015
  • 10
  • 139
  • 185
0

I am putting this here because I wanted to have an optional attribute in 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>
peterk
  • 5,136
  • 6
  • 33
  • 47