On 5/4/07, Steve Loughran <[EMAIL PROTECTED]> wrote:

One thing I've been thinking of this week is how could we work with Ivy
for automatic antlib download.

No code right now, just some thoughts


1. add a -offline argument to say "we are offline". this will set a
property, (and.build.offline) and the <offline> test will work. It is
meant to tell things like Ivy that we are offline. At some point we
could add some way for Ant to guess whether the net is there or not, if
java integrates with the OS properly (there is an API call for this in
J2ME, just not Java SE)
This makes me think that we could improve how Ivy deal with
online/offline mode. Indeed for the moment Ivy doesn't really know
which repository requires a network access and which doesn't. It would
be nice if Ivy would know that, so that even if offline mode you could
still use alocal repository (for antlib testing for instance).


2. when we encounter an element (or even an attr) in an unknown antlib
xmlns, and we want to map that to a projectcomponent, we hand off
resolution to an antlib resolver. We would have one built in (the
failing resolver), would default to the ivy one if it was present, and
provide some way to let people switch to a different one.
This sounds like a good idea.


3. an antlib resolver would do the mapping from antlib package to
artifacts (problem one),
Yes, and note that we have to consider the version too.

then download the metadata for that artifact,
pull it down and all its artifacts

4. we would then <typedef> the lib with the classpath that is set up by
the resolver
One question here: is it the responsibility of the resolver to keep
artifacts in a cache, or put artifacts in an Ant managed cache. This
is important to specify how things are going in offline mode. Ivy
already has pretty good support for offline mode, and I think we could
improve it (see above). But this is important to consider when
specifying the role of the antlib resolver.


we'd need a metadata tree mapping antlibs to well known packages, but
that is not too hard. JSON, perhaps.
Not too hard, except maybe for version information. I'm not sure that
it would be really nice to get the latest version by default, making
the build system automatically updated is not necessarily a good idea
(at least users have to keep very good control over that).

Xavier


-steve

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Learn Ivy at ApacheCon: http://www.eu.apachecon.com/
Manage your dependencies with Ivy!
http://incubator.apache.org/ivy/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to