maven包含这五个东西
一个项目对象模型
一组标准集合
一个项目生命周期
一个依赖管理系统
一套用来运行定义在生命周期阶段中插件目标的逻辑
maven能解决什么问题
- jar和项目分离, 这样就解决了jar冲突问题
- 将java文件编译成计算机能理解的class文件
- 方便测试, 能把指定目录下的单元测试一次性测试完成
- 方便打包, 用命令直接打包项目
所以我们可以看到在一个项目的所有过程中, maven都能起到帮助作用.
核心功能:
- 传统项目 VS maven项目, jar包在项目中, jar包和项目分离.
- 一个项目的经历
遍译-> 测试 -> 运行 -> 打包 -> 安装 -> 部署
而maven可以一键构建
不再使用本地安装的tomcat, 而是使用maven本身集成的tomcat插件, 来完成这些操作过程
也即是说, maven的两大特点就是可以jar包分离, 和一键构建项目
使用命令将maven项目运行起来
- 复制项目的路径
- cmd
- 进入项目目录
- 挑一个盘符, 这里就进入了项目目录中了
- 接下来在项目目录中敲命令Mvn tomcat:run
这样一来项目就运行起来了, 还提供了一个访问的地址
也就是说, 有了maven这个工具, 不用再去将项目一个一个安装部署在tomcat服务器上了
maven的安装
- 没有空格的目录下, 直接解压
- 了解目录结构
bin目录:
boot目录: maven自身运行的类加载器
conf目录: 这里面有一个setting.xml, 对maven进行各种配置
lib目录: 许多自身运行所用到的jar包, tomcat插件也在其中 - 创建maven的环境变量
变量名MAVEN_HOME, 值是安装的地址
进入path中添加该变量, %MAVEN_HOME%\bin
前提是, 已经正确的配置过了JAVA_HOME - 测试是否已经成功安装
cmd
mvn -v
maven仓库的种类和彼此的关系
- maven项目中没有jar包, 只有jar包地址坐标
.在conf -> setting.xml -> Default : ${user.home}/.mz/repository/
也就是本地C盘中用户文件夹下会自动生成一个本地仓库
默认情况下回去这里找jar包 - 一开始本地仓库中是没有jar包的, 如果此时的电脑是联网的话, 就会去一个叫中央仓库的地方找jar包, 下载jar, 如果本地仓库没有该坐标的jar包, 又没有联网, 就会报错了
- 公司中经常又开设一个仓库, 称为私服或者远程仓库, 在局域网中
如何自定义本地仓库
先下载一个有常用的jar的压缩包, 解压到本地一个没有空格和中文的目录中, 在setting.xml中修改即可
maven项目的标准目录结构
将一个项目分成四个部份, 为的是之后在维护中, 不用每一次都都重新将核心代码部份打包, 和测试的方便.
核心代码部份
配置文件部份
测试代码部份
测试配置文件
maven的生命周期对应的命令
当我们拿到别人的项目时
要清除在别人电脑上的编译信息
编译时只是编译main下java的代码
测试时不仅编译main下的java也编译test下的java
以此类推, 后面的命令会连带前面的所有命令.
maven概念模型图
pom.xml就是项目本身的信息+依赖jar的坐标信息+插件信息(jdk\tomcat)
一个jar包坐标至少包含以下的信息
所以这个图的最上层, 其实就是对应的maven的第一个核心功能, 依赖管理
下面的就是对应的第二个核心功能, 一键构建, 每一个构建项目的命令都对应了maven底层的一个插件
idea怎么集成maven
电脑上已经安装了maven
idea-> configure -> settings -> 搜索maven-> 点击maven
ok
jar的依赖范围