On Thu, Mar 27, 2008 at 5:51 AM, CheeYang Chau <[EMAIL PROTECTED]> wrote:
> Hi,
>
>  I love the macrodef task. However, it has a weakness.  We must be very
>  careful if using property within the macrodef.  I face problem with a
>  macrodef that is more complicated than the following example.  I have
>  to use dirname and condition in my macrodef, but it cause problem if I
>  invoke macrodef for more than one time as the property has been set
>  for the first time.  Here is an example that trying to replay the
>  situation I face:
>
>         <macrodef name="a">
>                 <attribute name="module"/>
>                 <sequential>
>                         <property name="myvalue" value="@{module}"/>
>                         <echo>${myvalue}</echo>
>                 </sequential>
>         </macrodef>
>
>         <target name="build">
>                 <a module="venus"/>
>                 <a module="mars"/>
>         </target>
>
>  I expect the output should be
>
>  [echo] venus
>  [echo] mars
>
>  but it turn out:
>
>  [echo] venus
>  [echo] venus
>
>  I think this is a common issue using macrodef and there are some
>  temporary solution to pass a temporary property name to the macrodef.
>  This is not feasible in my situation as I need to pass more than 5 to
>  10 properties to my macrodef.
>
>  Some other solution is using local property but I couldn't find this
>  task.  I am using ANT 1.7.0.
>
>  Any solution?  Please advice.  Thank you very much.
A common, if not so nice solution, is to use an attribute value as
a property name.

For example:
       <macrodef name="a">
               <attribute name="module"/>
               <sequential>
                       <property name="[EMAIL PROTECTED]" value="@{module}"/>
                       <echo>[EMAIL PROTECTED]</echo>
               </sequential>
       </macrodef>

Peter
>
>  --
>  Best regards,
>  Chau Chee Yang
>
>  E Stream Software Sdn Bhd
>  URL: www.sql.com.my
>  SQL Financial Accounting
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to