引言
搭建一个SSM环境的步骤是
- 导入jar包
- 包结构
- 书写配置文件
第一步导入jar包这一步就很繁琐,如果我们要搭建一个SSM的环境,少说也要导入十来个jar包
那么我们怎么找jar包,导入jar包的?一个一个去找,一个一个导入,麻烦易错,那么如何解决这个问题呢?
maven
Maven介绍
Maven 项目管理和构建的工具 底层是java
就是一个工具 相当于tomcat Tomcat帮我们做了什么事儿呢 发布项目 maven帮我们做项目管理
是Apache开源组织提供的一个基于POM(Project Object Model)的项目构建(Build)工具,所谓的构建指的是代码清除(clean)、编译(compile)、测试(test)、打包(package)、安装(install)、部署(deploy)等一系列流程
Maven特点
可以摆脱IDE的规范
什么是IDE规范 例子:当当网项目结构 IDEA和Myeclipes的区别----->问题:项目的迁移不方便 可移植性差 场景:项目进行到一半换IDEA能不能行?----->解决:maven提出统一的规范
通过命令快速构建项目
现在构建项目:通过IDE工具构建的
Maven:通过一个指令就可以
指令就是命令 javac
自动管理依赖
依赖为什么要管理 jar和jar之间有依赖关系 Sturts2和xwork----->问题:自己管理很麻烦,容易出错 ---->解决:maven可以自动的管理jar包
例子:Sturts2的开发,导入jar包
struts-core.jar 依赖 xwork-core.jar jar包之间是需要互相依赖的,那么有没有一种可能a--->b--->c--->d
如果要使用a,必须导入依赖的bcd
maven如何来解决这个问题?
节省磁盘空间
每个项目中都需要导入一套jar包 ----> 问题:jar包冗余 浪费空间 ---->解决:公共文件夹集中管理jar包 谁需要谁去引用---->maven就是这么做的 本地仓库文件夹---->问题:如果需要的jar包本地文件夹没有怎么办---->通过网络下载 maven中心仓库(演示访问) 原理图---->问题:如何告诉本地仓库需要什么jar包?如何标识一个jar包?---->maven坐标 演示一个坐标
1.例子:两个项目用的都是SSM架构,都需要导入一整套的jar包。
有什么问题?
代码冗余,jar包也冗余了。
如何解决这个问题?
2.例如我想在两个项目中都引入Mybatis的jar包,提供一个公共的文件夹(集中式的文件夹),如果要使用jar包都去这个文件夹中引用。不引入。
Maven就是这样做的,Maven中也有这样的一个文件夹,叫本地仓库。本地仓库就是本地电脑上的一个文件夹,存放jar包。
结论:Maven是集中式依赖管理的项目构建工具。
3.如果我现在要使用spring-core的jar包,而本地仓库中没有怎么办?
本地不可能有所有的jar包,但是可以通过网络去下载,去哪下呢?
Maven中心仓库(远程仓库):是Maven官方维护的,存储了全球知名开源的jar包。
@RestController
演示:中心仓库中看spring的jar包
这个过程有没有什么问题?
例子:买饮料 品牌(标识)
我们的项目如何告诉本地仓库要什么jar包呢?怎么去标识一个jar包(有唯一标识就可以确定一个jar包)?
Maven是通过坐标来标识jar包的。
Maven坐标
- 组织名 公司域名倒叙
- 项目名
- 版本号
演示:spring-core的坐标
坐标是标签格式的写在配置文件中。
Maven项目的标志就是pom.xml
Maven的规范
回顾IDE规范 解决预留问题:maven的规范是什么样的?----> 项目结构约束对比讲解
约定大于配置,用别人的东西遵守别人的规定
项目结构约束
dangdang
- src/main/java src存放源代码
- src/main/resources conf配置文件
- src/main/webapp
- src/test/java 存放测试代码
- src/test/resources 存放测试相关的配置文件
- target 目标目录 存放class文件
- pom.xml
项目必须遵守这样的结构