You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Antoine Levy-Lambert <an...@gmx.de> on 2010/02/01 00:30:54 UTC
Re: Add new resource to existing ResourceCollection (path) in ANT
build script
Hello Dan,
what you would write is something like that :
<addpath topath="project.class.basepath">
<path>
<pathelement="a/b/c/some.jar"/>
<fileset dir="foo" includes="*.jar"/>
</path>
</addpath>
In other words, the macrodef element <nested/> can be replaced by
anything which can fit inside a path.
Regards,
Antoine
Dan Beaulieu wrote:
> Err, I'm not entirely new to ant, but I don't understand how to use this. Any further explanation would be appreciated!
>
> <addpath topath="project.class.basepath">
> <nested>
> ...
> </nested>
> </addpath>
>
> -----Original Message-----
> From: Jan.Materne@rzf.fin-nrw.de [mailto:Jan.Materne@rzf.fin-nrw.de]
> Sent: Friday, January 29, 2010 12:38 AM
> To: user@ant.apache.org
> Subject: AW: Add new resource to existing ResourceCollection (path) in ANT build script
>
> I have an implementation for <path>s: copy to a temporary and then 'rename'
>
> <macrodef name="addpath">
> <attribute name="topath"/>
> <element name="nested" optional="yes" implicit="true"/>
> <sequential>
> <path id="tmp">
> <pathelement path="${toString:@{topath}}"/>
> <nested/>
> </path>
> <path id="@{topath}"><pathelement path="${toString:tmp}"/></path>
> <path id="tmp"/>
> </sequential>
> </macrodef>
>
>
> Jan
>
>
>> -----Ursprüngliche Nachricht-----
>> Von: Matt Benson [mailto:gudnabrsam@gmail.com]
>> Gesendet: Donnerstag, 28. Januar 2010 19:48
>> An: Ant Users List
>> Betreff: Re: Add new resource to existing ResourceCollection
>> (path) in ANT build script
>>
>>
>> On Jan 28, 2010, at 12:21 PM, Dan Beaulieu wrote:
>>
>>
>>> I've got a build script that builds multiple components and
>>>
>> jars them
>>
>>> up. I currently build a path like so:
>>>
>>> <path id="project.class.basepath">
>>> <fileset dir="${lib.dir}">
>>> <include name="**/*.jar" />
>>> </fileset>
>>> <fileset dir="${path.to.base}/components">
>>> <include name="*/build/lib/*.jar" />
>>> </fileset>
>>> </path>
>>>
>>> And this gets called before every compile target. So every time, its
>>> loading everything in the /lib dir and then scanning all of the
>>> components for jars.
>>>
>>> I'd like to just add to this path after I jar each component, So I'd
>>> have:
>>>
>>> <jar....>
>>> .
>>> .
>>> </jar>
>>> <path id="project.class.basepath">
>>> <path refid="project.class.basepath"/>
>>> <fileset dir="${path.to.base}/components/${component}">
>>> <include name="*${build.dir}/lib/*.jar" />
>>> </fileset>
>>> </path>
>>>
>>> But that doesn't work, with circular dependency failures.
>>>
>>> I also tried make a temp path with a different name first, but that
>>> did not work either with the same message.
>>>
>>> My main problem doing it as I currently am, is it's scanning all of
>>> the components (27 of them) every time for jars, when I really only
>>> want to add in the last one we just built, and I know when and where
>>> we are doing it so why not there?
>>>
>>> Anyway to update a path reference instead of stomping it and
>>> rebuilding it completely?
>>>
>> I would think the correct way to do this would be to design a
>> task that would use Ant's built-in facilities to augment a given ref
>> object with attributes and nested elements, but such is not trivial.
>> In the meantime you could/should probably script something like this.
>>
>> HTH,
>> Matt
>>
>>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org