One of the things that most anoyed me of the current architecture of ANT
if the way ClassPaths are managed during the build. Almost every task
that can be passed a <path> for finding classes, creates its own AntClassLoader.
As a consecuence ref-ids become incompatible very easily unless the classes are
all on the system classpath.

By creating AntClassLoaders on those indifvidual tasks we are forcing ANT
to reload class definitions a lot, which has to slow things down, IMHO.

I do not have a full solution (backward compatible and all), but would like to
propose doing some brainstorming to find a better way to do this (at least on 
most cases).

Here are some ideas I have been thinking about, for you guys to shread to 
pieces:

We continue declaring <path>s the way we do, but allow to specify caching of 
classloaders:

        <path cacheclasses=true>
                ...
        </path>

The Path class will have a new methods:

        ClassLoader getCachedLoader();
        void setCachedLoader(ClassLoader cl);

these methods would be used by AntClassLoader to decide whether to actually
create a new ClassLoader of simply delegate to the cached one. So users will 
continue
to use things as they do today, and just the internals of this implementations 
will know
about this things.

Of course, we still need some rules to decide when it is safe to use the same 
classloader and when not.
Given the configuration of the Path object.

Any comments, ideas, do you guys thing there is any hope on something like this 
to work?

Jose Alberto

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

Reply via email to