项目重构之后,需要重新组织项目结构,因为考虑到已经用maven来替换ant执行build,因此干脆使用maven来组织项目结构。
在maven中也有模块的概念,很好,这点正好和OSGi的理念切合。不过,maven的模块更多是构建时的模块,OSGi的模块是设计与运行时的模块。好在并没有太多的冲突。
原来的项目结构:
整个工程都在一个java项目中体现,层级关系以文件夹的包含结构体现。这样的结构带来了一些问题。比如:
1.在修改代码的时候需要不停的build整个项目,因为每次都是全集build,在这个构建的过程中需要损耗很多时间,这在敏捷开发中是绝对不可以接受的;
2.项目之间的依赖结构不清晰,需要深入到build脚本才能清晰的看到各个模块之间的依赖关系以及父子关系的描述。而且随着项目的演进,这种描述越发模糊与混乱,难以维护;
3.可重复使用的模块难以复用;
4.开发人员很难甚至无法基于源码进行调试,增加解决问题需要付出的成本;
基于maven管理的项目结构:
1.我们将整个项目依托maven的父子模块结构进行重新,每一个最小粒度的模块都是bundle,在其上的都是层级关系,是逻辑层面的划分。因此,我们在代码层面上的改动每次只需要更新一个bundle,不用再build整个项目。而且,开发人员可以基于源码调试,不用再无所事事的等待build。
2.父子结构,依赖关系都是在pom.xml中体现,而且这种关系在eclipse中表现如上图,算是比较清晰吧。
3.因为只有部分模块是基于OSGi,其它的模块可复用的部分就有了机会。