Maven
Maven
为什么要学maven
java项目的管理和构建工具
- 它提供了一套标准化的项目结构不同开发工具创建的项目结构是不一样的
但是maven规范了项目的结构,开发人员上手比较方便
- 提供了一套标准化的构建流程(编译、测试、打包、发布….)
- 繁琐一个流程:编译 -》测试-》打包—-》部署
提供了一套依赖管理机制(管理所有项目中的jar包)
之前传统的jar包和项目结合在一起,体积就会很大,占用磁盘空间过大,传输过程非常慢
- 解决:利用仓库统一管理了所有的jar包
- jar包和jar包之间的版本冲突问题
- 解决:利用“依赖传递”特性把相关的jar都会引入进来,有效解决一定程度的版本控制问题
下载安装maven
首先确认java的jdk版本:jdk17
修改配置文件
修改镜像
1 | <!-- 阿里云仓库 --> |
配置环境变量
验证
在IDEA中配置IDEA
在IDEA中创建maven项目
Maven结构介绍
采用约定目录结构的意义
约定大于配置
这样才能打包成web文件
设置web文件夹位置。
maven命令
IDEA里面自动有
如果要用终端手动操作,就用mvn clean…类似这样
测试代码
这个类最用Test开头,这样就可以使用Test命令,自动执行Test文件夹 中的Test代码
install就是把war包下载到本地仓库
deploy部署基本上用不上
依赖范围
编译范围:Main中使用
测试范围:test中使用
运行/打包范围:打包的时候会自动把jar包放入
依赖传递
war包是不能被别的项目引用的
想要依赖传递要先将B项目install到本地仓库
如果不想依赖过来就设置scope就可以了test和provide是不会传递的,同样设置optional 是否传递,默认是false 会传递。
依赖的排除
聚合工程
因为当两个项目进行依赖的时候,一个工程进行修改之后要进行install之后另一个工程才能进行依赖就很麻烦这时候就需要聚合工程。
这个工程主要用来管理不会用来写代码
1、新建个工程
2、删除src
3、把packaging修改成pom表示不是具体的jar包或者war包
4、新建模块
5、把子工程管理起来,在pom文件中
Maven继承
用parent标签
一个依赖:并不是子项目必须要的
那么我们可以把依赖放入dependencyManagement里面
然后在需要的项目里面单独加入依赖就好了,这样有个好处,子项目里的依赖就不用设定版本了,版本在父maven里面已经规定好了
通常会在父maven项目中管理所有的依赖的版本,声明在父Maven项目中
对于每个工程都必须要的放在dependencies中,版本配在父maven中