我正在创建一个API库,该库将部署到客户的内部部署应用程序中。此内部部署应用程序包含独立的插件模块,其中包含API库作为依赖项。每个应用程序可能有几个插件,因此API库的许多副本。
我希望能够灵活地改进API库,同时避免类加载器冲突。目前,OSGI实施不是一种选择。我想知道是否有人在类路径中放置版本信息,以创建类的不同实例,以避免冲突。
e.g。
com.product.v2014_04(第一版)包中的User.java
com.product.v2014_05(第二版)包中的User.java
有没有人有这方面的经验,或者知道使用此方法避免类路径冲突的任何流行实现?优点缺点?
非常感谢
答案 0 :(得分:2)
Apache使用它们的一些库来做到这一点。如果您查看较旧版本的commons-lang(such as 2.6),则所有包都位于org.apache.commons.lang
。抓住它的当前版本(such as 3.3),你会注意到所有的包都已重命名为org.apache.commons.lang3
。
当我最近将应用程序从2.6迁移到3.3时,通过修复我的所有导入语句有点痛苦,但它确实指出这是一个重大的版本更改,我需要付费注意我是如何使用代码的。