maven
maven
Frank leemaven基础
maven介绍
maven是一个项目管理工具,主要是在项目开发阶段对Java项目进行依赖管理和项目构建。
项目构建:对Jar包的管理,通过导入maven坐标,就到入了相关的jar包
依赖管理:使用maven命令就可以完成项目的清理、编译、测试、报告、打包、部署
maven仓库类型
本地仓库
远程仓库
- maven中央仓库:Central Repository: (maven.org)
- maven私服,需自己搭建
- 其他公共远程仓库
maven常用命令
- clean:清理编译生产的target文件
- compile:将源代码编译成字节码文件,并放在target/class下
- test:运行项目中的单元测试用例
- package:将项目打包成可分发的格式,JAR,WAR或者EAR等
- install:将项目打包并放在本地maven仓库
maven坐标书写规范
1 | <dependency> |
maven的依赖范围
1 | <dependency> |
- compile:默认的作用范围,所有路径均有效
- test:只在test路径有效
- provided:编译测试需要,运行时不将其打包到最终部署包中
- runtime:编译时不需要,运行时需要
maven的依赖传递
具体场景
A->B :A直接依赖B
B->C:B直接依赖C
那么A间接依赖C,引入依赖A时,依赖C的部分也会导入,可以多层传递
依赖冲突
当两个依赖导入时,两个依赖同时导入了相同的依赖,可是版本不一样
依赖冲突的解决
- maven提供的依赖调解原则
- 第一声明者优先原则:以先导入的依赖版本为主
- 路径近者优先原则:直接依赖优先于传递依赖
- 排除依赖:使用exclusions排除某个冲突的依赖
- 版本锁定:最多使用的方式
使用方式:
在dependencyManagement标签中锁定依赖的版本
在dependency标签中导入依赖,不需要指定version
分模块构建maven工程
当开发一个大型的项目时,可以将大型项目拆分为不同的工程
一般可以按照业务来拆分,也可以按照层来拆分
通过一个父工程来进行统一的管理和配置
maven继承
通过继承可以消除重复的代码,并对公共的部分做统一的配置与管理
先将父工程的打包方式改为pom,
然后添加子工程的的父工程
1 | <!-- 父工程打包方式为 --> |
maven聚合
在maven的父工程pom文件中,使用modules标签,将所有的工程聚合到一起,对聚合的工程进行统一管理,可以进行统一的打包,清理等操作
maven第三方Jar包安装到本地
进入到需要安装的目录,执行以下命令
1 | mvn install:intall-file |


