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]