一、多模块项目简介
所有用mavan管理的真实项目都应该是分模块的,每个模块对应着一个pom.xml,他们之间继承和聚合互相关联。划分模块后,导入Eclipse变成了n个项目,这会带来复杂度,给开发带来不便,那为什么还要用呢?原因有以下几点: 1、方便重用,如app-util这些模块可以渐渐进化成一个基础公共类,供所有项目使用,这是模块化最重要的一个目的。 2、由于你划分了模块,每个模块的配置都在各自的pom.xml,不用再到一个纷繁复杂的pom中寻找自己的配置。 3、如果你只是在app-util上工作,你不需要build整个项目,只要在app-util目录运行mvn命令即可,这样可以节省时间,尤其是当项目很庞大,build越来越耗时的时候。 4、某些模块,如app-util被所有人依赖,但你不想给所有人修改,你完全可以把app-util拿出来做成另一个项目,只提供jar包,没有修改权限。二、多模块项目的结构
一个简单的Maven模块结构是这样的: ---- app-parent |-- pom.xml (pom) | |-- app-util | |-- pom.xml (jar) | |-- app-dao | |-- pom.xml (jar) | |-- app-core | |-- pom.xml (jar) | |-- app-web |-- pom.xml (war)上述简单示意图中,有一个父项目(app-parent)聚合很多子项目(app-util, app-dao, app-core, app-web)。每个项目,不管是父子,都含有一个pom.xml文件。而且要注意的是,小括号中标出了每个项目的打包类型。父项目是pom,也只能是pom。子项目有jar,或者war。根据它包含的内容具体考虑。
三、Eclipse上创建多模块工程的步骤
我们看下在eclipse创建多模块项目的步骤: 1、首先创建一个父项目 new->project->maven->maven project,点击下一步,选择maven-archetype-site-simple,如下
再点击下一步,在groupid和artifactid中输入值,一般groupid指的是项目组织,举例比如奇虎公司,就是com.qihoo,ArtifactID就是项目的唯一的标识符,实际对应项目的名称,这里我们的项目名称叫做app。

选择完成,这时会在eclipse中生成一个项目。 2、接着创建子项目 将项目app中的src文件删除,父项目最主要的功能是管理其他子项目,本身并不用写代码,所以只保留一个pom.xml 就可以了。 选中项目app,点击右键,选择new->project->maven->maven module,填写module name(比如app-util、app-core、app-dao、app-web)点击下一步,这时选择maven-Archetype-site-quickStart(构建app-util、app-core、app-dao时使用)或者maven-Archetype-webapp(构建app-web层时使用),然后选择完成。


创建后的效果

3、最后设置依赖关系 这里app-web依赖app-core、app-util,app-core依赖app-util、app-dao,注意:依赖具有传递性,依赖关系在pom.xml 设置方法如下:
