我有一个项目(称为ExtensibleApp)。我正在努力使它模块化。这些模块将依赖于ExtensibleApp中已经存在的一些公共类。
假设我有一个模块myModule,它扩展了ExtensibleApp,并且依赖于一个类CommonClass.class
,那么我如何将CommonClass.class
导入myModule项目,并访问成员。
class MyModuleClass {
CommonClass commonClass = new CommonClass();
private void someMethod() {
commonClass.method....()
}
}
我想做的是创建一个可以通过模块进行扩展的项目。这些模块将被加载/下载到ExtensibleApp类路径之外的文件夹中。在运行时,我如何将两个Jar链接在一起,以便它们可以共享类。
示例目录结构:
main dir/---ExtensibleApp.jar
/---plugins ---/myModule.jar
/chat.jar
/videoplayer.jar
/like.jar
/unlike.jar
/etc.jar
/etc_etc.jar
有许多框架可以实现这一点。以下是其中一些的列表
- Maven
- OSGi,如果您想在模块之间进行更精细的访问控制
- 蚂蚁
- 阿帕奇常春藤
- Gradle
我在eclipse IDE上使用过Maven、OSGi和Ant。其中,我发现Maven是最简单的,OSGi也是最有用的。