在jdk7和jdk8上保持与(更改的)doclet API兼容

时间:2014-02-21 10:12:44

标签: java maven deprecated

我正在开发一个使用Doclet API的maven插件(例如ConfigurationImpl.getInstance()HtmlDocletWriter.commentTagsToString())。此API包含在JDK附带的tools.jar中。

在jdk8上,这些方法不再存在,因此插件会中断。

我现在正在寻找一种让我的插件兼容jdk7和8的方法。

我正在考虑使用提供稳定API的接口,并为每个JDK提供不同的实现。但是,我不确定如何切换/加载正确的实现。请注意,一切都需要打包在同一个jar(maven插件)中。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

创建一个工厂,为您提供界面实例。在工厂中,检查java.version系统属性。如果它是>= 8,那么您将实例化JDK 8的接口实现,否则为JDK 7的接口实现。那些实现类只能在该工厂中加载。因此,您不会遇到缺少API的问题,因为不会加载依赖于该API的类。