Ivy currently uses commons-httpclient for dealing with HTTP repositories. This is an internal implementation detail of Ivy. The way it's implemented, it allows the user to use a version of their choice, of this library, by placing them in the runtime classpath (similar to some other libraries we use). The implementation internally checks for the presence of 2.x as well as 3.x version of library to decide which version to use at _runtime_ [1].

At compile time, we use 3.x version of the library[2]. This leaves us in a bit of a problem in that if we use the recommended APIs in 3.x (at compile time) instead of the deprecated 2.x APIs or any 3.x API for that matter in our code, unless we mandate 3.x version of the library at runtime, users can run into classloading/library issues. Plus the fact that we can't easily support this 2.x vs 3.x usage in the same Ivy codebase.

So what I would like to propose is that for the upcoming release, we mandate 3.x as the version that we support and expect users to have that version of their library in the runtime classpath. In other words, we no longer support 2.x of commons-httpclient in the upcoming release. That will make it much more easier to manage the internal implementation details without having to juggle with versions of the library.

Any thoughts?

[1] https://github.com/apache/ant-ivy/blob/master/src/java/org/apache/ivy/util/url/HttpClientHandler.java#L224

[2] https://github.com/apache/ant-ivy/blob/master/ivy.xml#L47


-Jaikiran



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org

Reply via email to