You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Samuel Monsarrat <sa...@kelis.fr> on 2008/02/19 14:48:05 UTC

Migrating form ANT 1.6 to 1.7: xmlproperty

I am attempting to migrate a large ANT build system from 1.6 to 1.7 and 
am running into a problem with xmlproperty.
We use xmlproperty massively in our build system and very often "stack" 
several xmlproperty calls in order to build a complex property 'tree', 
where several inter-dependent build files will declare and/or overload 
parts of the tree using xmlproperty.
Our approach however is completely incompatible with ANT 1.7 due to a 
modification to xmlproperty (bug 26286 c.f. 
http://issues.apache.org/bugzilla/show_bug.cgi?id=26286) that forces 
"empty" elements in an XML property tree to be declared.

Consider the following exemple:
===> build_A.xml :
<project  name="Bui_A" default="All">
    <xmlproperty file="about_A.xml"/>
    <import file="build_B.xml"/>
    <target name="All">
        <ant target="Bui_B.main"/>
    </target>
</project>

===> about_A.xml:
<app>
    <version developmentStage="beta"/>
</app>

===> build_B.xml :
<project  name="Bui_B">
    <xmlproperty file="about_B.xml"/>
    <target name="Bui_B.main">
       <echo message="The version number is: '${app.version}'"/>
       <echo message="The development stage is: 
${app.version(developmentStage)}"/>
       <!-- etc.... -->
    </target>
</project>

===> about_B.xml:
<app>
    <version developmentStage="final">2.4.0</version>
</app>

The aim is : When running build_A.xml use most of about_B.xml but 
overload certain parts of it with about_A.xml

In ANT 1.6 about_A.xml would only set property 
app.version(developmentStage) effectively overloading the 
developmentStage defined in about_B.xml, but with ANT 1.7, about_A.xml 
also sets the property app.version to "empty" thus making it impossible 
for about_B.xml to define it as 2.4.0.

In ANT 1.6 the output  is:
[echo] The version number is: '2.4.0'
[echo] The development stage is: 'beta'

in ANT 1.7 the output is:
[echo] The version number is: ''
[echo] The development stage is: 'beta'
 
This makes it impossible to use xmlproperty to overload a single path in 
a complex property tree, and therefore destroys one of the main features 
of the task as far as I can see.
Has anybody come across the same problem? any workaround?
Regards,
Samuel.


Re: Migrating form ANT 1.6 to 1.7: xmlproperty

Posted by Olivier Gies <ol...@bull.net>.
Hi Sam,

 From my point of view, a solid approach would simply be to override 
Ant's <xmlproperty> task with a new attribute like "setempty", set to 
"false", or "true" depending on the convenience, by default... Then use 
<taskdef> to define your overriding class as the <xmlproperty> task.

Olivier

-------- Original Message  --------
Subject: Migrating form ANT 1.6 to 1.7: xmlproperty
From: Samuel Monsarrat <sa...@kelis.fr>
To: user@ant.apache.org
Date: 19/02/2008 21:49

> I am attempting to migrate a large ANT build system from 1.6 to 1.7 and 
> am running into a problem with xmlproperty.
> We use xmlproperty massively in our build system and very often "stack" 
> several xmlproperty calls in order to build a complex property 'tree', 
> where several inter-dependent build files will declare and/or overload 
> parts of the tree using xmlproperty.
> Our approach however is completely incompatible with ANT 1.7 due to a 
> modification to xmlproperty (bug 26286 c.f. 
> http://issues.apache.org/bugzilla/show_bug.cgi?id=26286) that forces 
> "empty" elements in an XML property tree to be declared.
> 
> Consider the following exemple:
> ===> build_A.xml :
> <project  name="Bui_A" default="All">
>    <xmlproperty file="about_A.xml"/>
>    <import file="build_B.xml"/>
>    <target name="All">
>        <ant target="Bui_B.main"/>
>    </target>
> </project>
> 
> ===> about_A.xml:
> <app>
>    <version developmentStage="beta"/>
> </app>
> 
> ===> build_B.xml :
> <project  name="Bui_B">
>    <xmlproperty file="about_B.xml"/>
>    <target name="Bui_B.main">
>       <echo message="The version number is: '${app.version}'"/>
>       <echo message="The development stage is: 
> ${app.version(developmentStage)}"/>
>       <!-- etc.... -->
>    </target>
> </project>
> 
> ===> about_B.xml:
> <app>
>    <version developmentStage="final">2.4.0</version>
> </app>
> 
> The aim is : When running build_A.xml use most of about_B.xml but 
> overload certain parts of it with about_A.xml
> 
> In ANT 1.6 about_A.xml would only set property 
> app.version(developmentStage) effectively overloading the 
> developmentStage defined in about_B.xml, but with ANT 1.7, about_A.xml 
> also sets the property app.version to "empty" thus making it impossible 
> for about_B.xml to define it as 2.4.0.
> 
> In ANT 1.6 the output  is:
> [echo] The version number is: '2.4.0'
> [echo] The development stage is: 'beta'
> 
> in ANT 1.7 the output is:
> [echo] The version number is: ''
> [echo] The development stage is: 'beta'
> 
> This makes it impossible to use xmlproperty to overload a single path in 
> a complex property tree, and therefore destroys one of the main features 
> of the task as far as I can see.
> Has anybody come across the same problem? any workaround?
> Regards,
> Samuel.
> 
> 
> ------------------------------------------------------------------------
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org

-- 
*Olivier Gies*

*Delivery Manager
Customs & Tax Software Engineering Center
Bull, Architect of an Open World ^TM
Phone: +86 (10) 65978001 - Ext 555 *

*www.bull.com <http://www.bull.com/>*

*This e-mail contains material that is confidential for the sole use of
the intended recipient. Any review, reliance or distribution by others
or forwarding without express permission is strictly prohibited. If you
are not the intended recipient, please contact the sender and delete all
copies.*


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org