maven基础概念
maven是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、 告和文档等步骤。
是什么
maven其实是bai一个构建工具、依赖管理工具、项目信息聚合工具
为什么
使用maven工具可以方便的编译代码、进行依赖管理、管理二进制库等。
目录结构
生命周期
基础概念:
maven对构建(build)的过程进行了抽象和定义,这个过程被称为构建的生命周期(lifecycle)。生命周期(lifecycle)由多个阶段(phase)组成,每个阶段(phase)会挂接一到多个goal。
详细解释如下图:

简要概述:
校验–>初始化–>编译–>测试–>打包–>集成测试–>安装–>部署
validate–>initialize–>compile–>test–>package–>integrationTest–>install–>deploy
坐标
.基础概念:
compile:编译时依赖在所有阶段都可获得,这是默认值。
provided: 提供的依赖范围用来编译应用程序,但无需部署。若你用到jdk或者应用服务器提供的JAR,则使用此范围,servlet APIs就属于这个依赖范围。测试时,此依赖范围也加入到classpath。
runtime:运行依赖范围在编译阶段是不需要的,只有在运行时需要,比如JDBC驱动程序。
test:测试范围依赖,仅在编译和运行单元测试时需要(比如Junit)。
system 本地依赖,不建议使用。(nexus)
.
依赖范围:
依赖范围**(scope)** | 编译时依赖 | 测试时依赖 | 运行时依赖 | 是否打入包 | 例子 |
---|---|---|---|---|---|
compile | Y | Y | Y | Y | SLF4J |
provided | Y | Y | Y | N | SERVLET-API |
test | N | Y | N | N | JUNIT |
runtime | N | Y | Y | Y | MYSQL JDBC DRIVER |
system | Y | Y | Y | Y | 有nexus后,不用system |
依赖传递
只有编译(compile)时和运行时(runtime)依赖是传递的
原则:
简单传递依赖:A->C:
A->B->C
最短路径优先原则: A->C(0.2):
A->B-C(0.1)
A->C(0.2)
第一声明优先原则:最终依赖C(0.1):
A->B->C(0.1)
A->E->C(0.2)
仓库
Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。
Maven 仓库有三种类型:
本地(local)
中央(central)
远程(remote)
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
本地仓库(local)->私服镜像(aliyun)中央仓库(central)->远程(remote)
aliyun:Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。
常用命令
简单使用
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树Java概览Maven基础93065 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!