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]>