我希望能够将Java中的公共类/接口注释为@NonPublic
,这意味着此接口只能在此项目中使用,它不< / strong>此项目导出的公共API的一部分。
这对于由多个jar文件组成的项目很常见。并非所有public
类/接口都是在jar之外真正公开的。
你知道有没有这样做的工具/框架/插件?
答案 0 :(得分:2)
恕我直言,Java中的软件包系统是存在的最破碎的东西之一。
我不熟悉任何标准的Java级机制,尽管编写一个可以强制执行它的工具或编译器扩展可能很容易。
但是,如果您正在使用OSGi(Eclipse是以这种方式编写的),它的一个优点是用于指定更好的包和模块级限制的系统。
答案 1 :(得分:2)
如果没有OSGi,另一个常见做法就是实现单独的API。
您可以将编译时所需的类与运行时期间所需的类分开。防止库的用户依赖于实现细节。
myLibAPI.jar
myLibImpl.jar
答案 2 :(得分:1)
OSGi Bundle是解决方案。
如果要将Jar转换为Eclipse插件,可以使用Eclipse RCP版本。右键单击您的项目:Configure - &gt;转换为插件项目