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]