1、maven自动管理java包
2、maven构建多个模块,结构清晰,管理方便。
3、使用mybatis持久化框架,手动编写更多的sql语句
一、测试环境原理
mysql5.5 + myeclipse2014 +navicate + jdk1.7 + tomcat 7
1、模块聚合
随着项目越来越大,功能越来越多,更多的时候需要模块管理,例如本实例分为model persist service web
maven的聚合功能将多个模块统一管理,一次构建。
聚合pom仅仅是帮助模块聚合的工具,本身并没有实质内容
module 就是各模块名称
通过构建一个打包方式为pom的maven项目,通过声明多个module,来实现聚合。
packaging:pom 否则无法聚合构建
2、pom继承
通过在父pom中声明来实现子pom中的复用和消除。
打包方式packging:pom,因此可以和聚合使用同一个配置文件。
dependencyManagement 、pluginManagement,让子pom继承父pom的同时,又保证了子pom的灵活性,并没有实际引入子pom中,但约束了子pom的依赖。
二、项目目录结构
各项目功能介绍:
ssm-root是maven-project是父级maven,管理整个项目
ssm-model是数据模型模块
ssm-persist是持久化模块,使用的mybatis,则有映射的接口和对应的xml配置文件
ssm-util是工具模块
ssm-service是业务服务模块,是对数据操作接口定义和实现的模块
ssm-web是核心业务处理层,是springmvc的controller实现处
三、项目搭建
首先eclipse得安装maven,教程https://jingyan.baidu.com/article/295430f136e8e00c7e0050b9.html
1、创建父级maven-project
新建--->maven-project-->simple-->输入名称,创建完毕。
注意:
groupId定义当前模块隶属的实际Maven项目, 表示方式与Java包类似
: groupId不应直接对应项目隶属的公司/组织(一个公司/组织下可能会有很多的项目).
artifactId定义实际项目中的一个Maven模块
: 推荐使用项目名作为artifactId前缀, 如:commons-lang3以commons作为前缀(因为Maven打包默认以artifactId作为前缀)
version定义当前项目所处版本(如1.0-SNAPSHOT、4.2.7.RELEASE、1.2.15、14.0.1-h-3 等)
:Maven版本号定义约定: <主版本>.<次版本>.<增量版本>-<里程碑版本>
packaging定义Maven项目打包方式, 通常打包方式与所生成构件扩展名对应
:有jar(默认)、war、pom、maven-plugin等.
classifier用来帮助定义构建输出的一些附属构件(如javadoc、sources)
: 不能直接定义项目的classifier(因为附属构件不是由项目默认生成, 须有附加插件的帮助)
2、创建子maven-model
注意:父maven管理所有的子maven项目
在父maven中选择新建--->选择maven-model-->选择quickstart--->输入相关参数
注意:此时,在父级maven中已经含有了子maven-model项目
重复上述步骤,依次创建persist、service、util,
对于web项目,在filter时,输入web,选择相应maven管理下的web app
注意:创建完web项目后,我的该web项目会自动添加maven webapp 然而在pom.xml中使用的项目名称是web,于是对该项目重命名,使用reactor--rename,当修改了name后,发现子项目web消失了,于是从新创建model,选择web,eclipse会自动将之前创建的web项目载入。
第一次创建后,没有修改,在maven clean时候,报错,说在找不到web的pom.xml。具体原因,未确定。
关于依赖。
参考文章:http://blog.csdn.net/zjf280441589/article/details/53044308