ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dominique Devienne" <>
Subject RE: "macrodef" for nested elements
Date Mon, 02 May 2005 17:02:40 GMT
> From: []
> I would like a way to reduce the boilerplate load in a situation such
> this:
> 	    <tar destfile="${build.root}/statics.tar">
> 	        <tarfileset dir="${build.root}/images" prefix="images"
> 	                          username="myuser" group="mygroup"
> mode="664"
> dirmode="775"/>
> 	        <tarfileset dir="${build.root}/styles" prefix="styles"
> 	                          username="myuser" group="mygroup"
> mode="664"
> dirmode="775"/>
> 	        <tarfileset dir="${build.root}/userguide"
> 	                          username="myuser" group="mygroup"
> mode="664"
> dirmode="775"/>
> 	        <tarfileset dir="${build.root}/tutorial"
> 	                          username="myuser" group="mygroup"
> mode="664"
> dirmode="775">
> 	            <include name="*.swf"/>
> 		</tarfileset>
> 	        <tarfileset dir="$"
> 	            username="myuser" group="mygroup" mode="664"
> dirmode="775"/>
>            </tar>
> As you can see, all but one of the attributes of the tarfileset nested
> elements are boilerplate, repeated at every instance, but there is no
> way to default these.   I thought <macrodef> might provide some help
> here, but it doesn't, since macrodef only provides bits of runnable
> tasks, not nested sets of attributes.  A less flexible alternative,
> still preferable to the above, would be to provide default values for
> the nested elements in the outer <tar> task.  <tar> doesn't, at
> present, provide this functionality.  That might be doable through
> macrodef, but does macrodef allow variable numbers of nested elements?

Others have commented on the feasibility of using macrodef/presetdef,
both of which do not really apply to your problem, but I'm going to ask
for a dummy question ;-) Why not simply do something like this:

<tar destfile="${build.root}/statics.tar">
  <tarfileset dir="${build.root}" username="myuser"
              group="mygroup" mode="664" dirmode="775">
    <include name="images/**" />
    <include name="styles/**" />
    <include name="userguide/**" />
    <include name="tutorial/*.swf" />
  <tarfileset dir="$" username="myuser"
              group="mygroup" mode="664" dirmode="775"/>

Wouldn't that do exactly what you want, since the directory name under
${build.root} and the prefix you used are the same? --DD

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message