Kev Jackson wrote:
Here's my non-committer 2pennies worth...

I think it would be beneficial to refactor Ant for some of the commons-libs (commons-exec for example), I also think it'd be useful for Ant 1.7 to splitoff as many tasks as possible into antlibs. The Antlib idea seems to me to be the best way of refactoring Ant into a component based system where individual tasks can be released without having to release a new version of Ant (the main purpose of Antlibs was this as far as I'm aware).

I think the main goal of antlibs was to
(a) permit stuff to be completely decoupled (eg dotnet)
(b) make it easier for 3rd party stuff to integrate withant without all the typedefs

As someone who does do third party tasks to work with both ant1.6 and 1.7, I am also well aware of the price: versioning against Ant JARS. Even If we fix something in Ant SVN HEAD, anything released on its own schedule still has to work with the older stuff. I have real problems with things like java and the spawn options, and something in file utils warns me it is deprecated whenever I build, just because I want to retain compatibility with Ant1.6


With the Antlibs in place (assume all SCM related tasks and some others converted to antlibs instead of core/optional), the process of refactoring out commons-XXX libraries I would think would be simpler, not least in tracking and fixing bugs.

You're right when you mention the Jar hell problem, I can imagine that would be a major pain to deal with if ant required commons-xyz and commons-xyz required ant to compile.

yes, ant has the bootstrap problem. Core ant cannot depend upon anything under than the JDK and an XML parser. And that includes execution.


Anyway, from me, I think it'd be worthwhile to at least discuss refactoring out common components.

yes, we can discuss it :)

I do actually agree that execution and JAR files ought to be structured so that they can be reused. The code in there is some of the best debugged stuff out there in Java for doing both.

But I dont want to break ant or make Ant1.7 slip in the process; and we cannot change the public interfaces for all the existing classes.

which leaves a design like

-move execution, Jar support self contained packages in the ant codebase
-provide self contained API with unit tests for that functionality.
-retain the existing stuff as facades
-release a separate ant-execution library, at exactly the same frequency as ant point releases.

The latter is going to be problematic, and here's why. If there is one thing that always causes grief in Ant, its JAR files sticking other Jars inside. Groovy, jython, maven-artifact-ant-2.0-beta-1-dep; all incorporate other things like regexp, jsch, whatever into their JAR, creating lots of classpath conflict. If we integrate execution into ant, either within ant.jar or as an associated JAR, we cannot make it possible for someone to stick an inconsistent version in, -or at least we cannot make it possible for someone like me to ship a 3rd party ant task that also includes an updated version of the libraries.

-steve


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

Reply via email to