目录
5、在 main 目录下新建 java 和 resources文件夹
6、把 java 和 resources文件夹转成source root
一、 回顾[ 理解]
1. Maven 的好处
节省磁盘空间
可以一键构建
可以跨平台
应用在大型项目时可以提高开发效率
2. 安装配置 maven
注意:3.3+版本需要 jdkj.7+以上的支持
3. 三种仓库
本地仓库
远程仓库(私服)
中央仓库
4. 常见的命令
Compile
Test
Package
Install
Deploy
Clean
5. 坐标的书写规范
groupId 公司或组织域名的倒序
artifactId 项目名或模块名
version 版本号
6. 如何添加坐标
1、在本地仓库中搜索
2、互联网上搜,推荐网址 http://www.mvnrepository.com/
7. 依赖范围
Compile
Test
Runtime
Provided
二、maven 构建 SSM 工程[ 应用]
1. 需求
实现 SSM 工程构建,规范依赖管理。场景:根据 id展示商品信息
2. 准备数据库
![]()
3. 创建一个 maven
1、新建一个 ssm_maven 项目,使用下图选中的骨架

2、填写坐标

3、查看是否使用的自己的私服

5、在 main 目录下新建 java 和 resources文件夹

6、把 java 和 resources文件夹转成source root

7、修改编译版本,在 pom.xml 文件中添加

4. 知识点准备
4.1 什么是依赖传递
先添加 springmvc的核心依赖的坐标

会发现出现除了 spring-webmvc 以外的其他 jar。因为我们的项目依赖 spring-webmv.jar,而spring-webmv.jar 会依赖spring-beans.jar 等等,所以 spring-beans.jar 这些 jar 包也出现在了我们的 maven 工程中,这种现象我们称为依赖传递。从下图中可看到他们的关系:(请注意spring-beans 的版本)

4.2 依赖冲突的解决
接着添加一个依赖

我们会发现这两个 jar 包同时都依赖了 spring-beans
但是spring-webmvc 依赖 spirng-beans-4.2.4,spring-context 依赖 spring-beans-5.0.2,但是发现
spirng-beans-4.2.4 加入到工程中
而我们希望 spring-beans-5.0.2 加入工程。这就造成了依赖冲突。解决依赖冲突有以下原则:
4.2.1 依赖调解原则
maven 自动按照下边的原则调解:
1 、第一声明者优先原则
在 pom 文件定义依赖,先声明的依赖为准。
测试:
如果将上边 spring-webmvc 和 spring-context 顺序颠倒,系统将导入 spring-beans-5.0.2。
分析:
由于 spring-webmvc 在前边以 spring-webmvc 依赖的 spring-beans-5.0.2 为准,所以最终spring-beans-5.0.2 添加到了工程中。
2、路径近者优先原则
例如:还是上述情况,spring-contex 和 spring-webmvc 都会传递过来 spirng-beans,那如果直接把 spring-beans 的依赖直接写到 pom 文件中,那么项目就不会再使用其他依赖传递来的 spring-beans,因为自己直接在 pom 中定义 spring-beans要比其他依赖传递过来的路径要近。
在本工程中的 pom 中加入 spirng-beans-5.0.2 的依赖,根据路径近者优先原则,系统将导入spirng-beans-5.0.2:

4.2.2 排除依赖
上边的问题也可以通过排除依赖方法辅助依赖调解,如下:
比如在依赖 spring-webmvc 的设置中添加排除依赖,排除 spring-beans,
下边的配置表示:依赖 spring-webmvc,但排除 spring-webmvc 所依赖的 spring-beans。

4.2.3 锁定版本
面对众多的依赖,有一种方法不用考虑依赖路径、声明优化等因素可以采用直接锁定版本的方法确定依赖构件的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定的版本的为准添加到工程中,此方法在企业开发中常用。
如下的配置是锁定了 spring-beans 和 spring-context 的版本:

还可以把版本号提取出来,使用<properties>标签设置成变量

注意:在工程中锁定依赖的版本并不代表在工程中添加了依赖,如果工程需要添加锁定版本的依赖则需要单独添加<dependencies></dependencies>标签,如下:

5. 定义 pom.xml
maven 工程首先要识别依赖,web 工程实现 SSM 整合,需要依赖 spring-webmvc5.0.2、
spring5.0.2、mybatis3.4.5等,在 pom.xml 添加工程如下依赖:
(在实际企业开发中会有架构师专门来编写 pom.xml)
分两步:1)锁定依赖版本
2)添加依赖











6. Dao 层
6.1 pojo

6.2 dao 层代码

6.3 配置文件





6.4 单元测试

7. Service 层
7.1 代码

7.2 配置文件

8. Web 层
8.1 代码

8.2 配置文件
springmvc.xml


Web.xml
加载 spring容器,配置 springmvc前端控制器

9. Jsp
/WEB-INF/jsp/viewItem.jsp 如下:


10. 运行 与调试
添加 tomcat7插件,双击右侧tomcat7 运行


三、 分模块构建工程[ 应用]
基于上边的三个工程分析
继承:创建一个 parent 工程将所需的依赖都配置在 pom 中
聚合:聚合多个模块运行。
1. 需求
需求描述
将 SSM 工程拆分为多个模块开发:

理解 继承和聚合
通常继承和聚合同时使用。
何为继承?
继承是为了消除重复,如果将 dao、service、web 分开创建独立的工程则每个工程的 pom.xml文件中的内容存在重复,比如:设置编译版本、锁定 spring的版本的等,可以将这些重复的配置提取出来在父工程的 pom.xml 中定义。
何为聚合?
项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web 三个工程最终会打一个独立的war 运行。
2. 案例实现
2.1 maven-parent 父模块
2.1.1 创建父工程
1、选择骨架创建父工程

2、填写坐标

3、确认使用的是本地仓库

4、注意代码所在的路径(默认)

5、设置项目的打包方式

2.1.2 定义 pom.xml
在父工程的 pom.xml 中抽取一些重复的配置的,比如:锁定 jar 包的版本、设置编译版本等。

2.1.3 将父工程发布至仓库
父工程创建完成执行 install 将父工程发布到仓库方便子工程继承

2.2 ssm_dao 子模块
2.2.1 创建 dao 子模块
1、在父工程上右击创建 maven 模块:

2、选择“跳过骨架选择”:

3、填写模块名称

4、下一步,确定项目的目录

5、打包方式是 jar

2.2.2 定义 pom.xml
只添加到dao层的 pom,mybatis 和 spring 的整合相关依赖



2.2.3 dao 代码


2.2.4 配置文件
将 applicationContext.xml拆分出一个applicationContext-dao.xml,此文件中只配置 dao 相关

2.2.5 单元测试

2.2.6把 dao 模块 install 到本地仓库

2.3 ssm_service 子模块.
2.3.1 创建 service 子模块
方法同 ssm_dao 模块创建方法,模块名称为 ssm_service。
2.3.2 定义 pom.xml

2.3.3 service 接口
将 ssm_maven 工程中的service接口拷贝到 src/main/java中:
2.3.4 配置文件

2.3.5 依赖范围对传递依赖的影响(了解)
2.3.5.1 问题描述


2.3.5.3 依赖范围对传递依赖的影响


2.3.6 单元测试

2.3.7 Install 到本地仓库

2.4 ssm_web 子模块
2.4.1 创建 web 子模块

2、确认使用自己的本地仓库

3、填写模块名称

使用骨架创建 web 项目会花费些时间,请耐心等待

5、添加打包方式war

2.4.2 定义 pom.xml


2.4.3 controller

2.4.4 配置文件

2.5 运行 调试
方法 1:在ssm_web 工程的 pom.xml 中配置 tomcat 插件运行
运行 ssm_web 工程它会从本地仓库下载依赖的 jar 包,所以当 ssm_web 依赖的 jar 包内容修
改了必须及时发布到本地仓库,比如:ssm_web 依赖的 ssm_service 修改了,需要及时将ssm_service 发布到本地仓库。
方法 2:在父工程的 pom.xml 中配置 tomcat插件运行,自动聚合并执行
推荐方法2,如果子工程都在本地,采用方法2则不需要子工程修改就立即发布到本地仓库,
父工程会自动聚合并使用最新代码执行。
注意:如果子工程和父工程中都配置了tomcat 插件,运行的端口和路径以子工程为准。
3. 分模块构建工程-- 依赖整合
每个模块都需要 spring 或者 junit 的 jar,况且最终 package 打完包最后生成的项目中的jar 就是各个模块依赖的整合,所以我们可以把项目中所需的依赖都可以放到父工程中,模块中只留模块和模块之间的依赖,那父工程的 pom.xml 可以如下配置:









四、 maven 私服[ 了解]
1. 需求
正式开发,不同的项目组开发不同的工程。
ssm_dao工程开发完毕,发布到私服。
ssm_service 从私服下载 dao
2. 分析

3. 搭建私服环境
3.1 下载 nexus


3.2 安装 nexus

3.3 卸载 nexus
![]()

3.4 启动 nexus




3.5 仓库类型




4. 将项目发布到私服
4.1 需求

4.2 配置



4.3 测试


5. 从私服下载 jar 包
5.1 需求

5.2 管理仓库组

5.3 在 setting.xml 中配置仓库






5.4 测试从私服下载 jar 包



五、 把第三方 jar 包放入本地仓库或私服
1. 导入本地库



2. 导入私服



3. 参数说明

