一 开发环境
Eclipse JavaEE IDE,版本代号:Mars.2Release (4.5.2)
apache-maven-3.3.9
JDK1.7
apache-tomcat-7.0.29。
二 分模块开发的好处
用Maven管理的比较大的项目大部分都是分模块的,每个模块都对应着一个pom.xml。它们之间通过继承和聚合相互关联。那么,为什么要这么做呢?我们明明在开发一个项目,划分模块后,导入Eclipse变成了N个项目,这样岂不带来复杂度,给开发带来不便?
为了解释原因,假设有这样一个项目,很常见的spring+spring mvc+mybatis整合开发的web应用。在这个应用中,我们分了几层:
1) entity层即实体层,也即放置PO类还有跟PO类相关联的配置文件。
2) Dao层负责数据库交互,封装了Hibernate交互的类。
3) Service层处理业务逻辑,放一些Service接口和实现相关的Bean。
4) Web层负责与客户端交互,主要有一些Structs的Action类。
对应的,在该项目中,我们会看到如下一些包名:
1) com.mycom.com.entitys
2) com.mycom.com.dao
3) com.mycom.com.service
4) com.mycom.com.web
这样整个项目的框架就清晰了,但随着项目的进行,你可能会遇到如下问题:
Ø 这个应用可能需要有一个前台和一个后台管理端,你发现大部分entitys,一些service,和大部分dao是在两个应用中可通用的。这样的问题,你一周内遇到了好几次。
Ø pom.xml中的依赖列表越来越长,但是,由于目前只有一个项目(WAR),你不得不新建一个项目依赖这个WAR,这变得非常的恶心,因为在Maven中配置对WAR的依赖远不如依赖JAR那样简单明了,而且你根本不需要org.myorg.app.web。有人修改了dao,提交到svn并且不小心导致build失败了,你在编写service的代码,发现编译不过,只能等那人把dao修复了,你才能继续进行,很多人都在修改,到后来你根本就不清楚哪个依赖是谁需要的,渐渐的,很多不必要的依赖被引入。甚至出现了一个依赖有多个版本存在。
Ø build整个项目的时间越来越长,尽管你只是一直在web层工作,但你不得不build整个项目。
Ø 某个模块,比如dao,你只想让一些经验丰富的人来维护,可是,现在这种情况,每个