我当前的java项目,有点旧,正在使用4.1.x版的Apache httpcomponents jar。
现在我想在我的项目中引入一些新功能,它应该使用4.3.x版本。
我的问题是如何将httpcomponents升级到新版本,并确保它不会破坏旧代码而不通过整个项目。 (项目很大,很多地方都依赖于旧版本)。
是否有人可以提供有关httpcomponents API如何随时间变化的想法?
答案 0 :(得分:3)
预计所有GA版本的HC 4.x都是完全向后兼容的。一个人应该能够在不破坏现有代码(*)的情况下删除4.3代替4.1。与此同时,弃用代码往往不那么严格地进行回归测试,因此通常建议在升级后迁移到不推荐使用的功能。
(*)在4.2 GA
中删除了之前的之前到4.0 GA的代码答案 1 :(得分:2)
最好的方法是拥有一些可以捕获任何集成问题的良好单元和集成测试。您还应该查看release notes并查看是否依赖于这些次要版本更改之间发生更改的任何行为。有几个标题为“不兼容的更改”的部分,您应该检查并查看是否依赖于那里的行为。
例如,在版本4.2 :
下不兼容的变更
[与发布版本4.1.4相比]
以下方法现已弃用一段时间了 被删除:
org.apache.http.impl.SocketHttpServerConnection#createHttpDataReceiver(插座, int,HttpParams) org.apache.http.impl.SocketHttpServerConnection#createHttpDataTransmitter(插座, int,HttpParams) org.apache.http.protocol.HttpRequestHandlerRegistry#matchUriRequestPattern(字符串, 字符串)
以下类已被弃用了一段时间,现在已经有了 被删除:
org.apache.http.nio.entity.ByteArrayNIOEntity org.apache.http.nio.entity.FileNIOEntity org.apache.http.nio.entity.HttpNIOEntity org.apache.http.nio.entity.StringNIOEntity org.apache.http.nio.protocol.NHttpClientHandlerBase org.apache.http.nio.protocol.NHttpServiceHandlerBase
由于它只是一个次要的版本,我相信该项目遵循semantic versioning,因此应该只能以向后兼容的方式添加功能。