maven:
基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、 告和文档的软件项目管理工具
下载maven访问maven.apache.org
maven目录结构:
bin目录:mvn运行的一些脚本,在Windows命令行输入命令时会调用。
boot目录:包含了一个类加载器的框架,maven使用它加载自己的类库。
conf:配置文件,setting.xml,log。
lib:包含了maven自身和第三方依赖的类库
配置环境变量:
M2_HOME:maven主目录
path 添加 :%M2_HOME%bin
检测安装:
cmd: mvn -v 查看maven版本
maven常用命令:
compile 编译
test 测试
package 打包
clean 删除target
install 安装jar包到本地仓库中
1、坐标(构件通过坐标作为其唯一标识)
groupId、artifactId、version
2、仓库:
本地仓库
远程仓库(全球中央仓库https://repo.maven.apache.org/maven2)
镜像仓库
/conf/setting.xml镜像仓库配置:
3、修改本地仓库的位置
Ps:一旦配置了镜像仓库,那么先前的所有配置都会转到镜像仓库中。
默认仓库位置.m2 repository,将settings.xml复制到更改后的本地仓库中,这样maven版本更新了,也不用修改settings.xml了
maven的三套生命周期:
clean 清理项目
pre-clean 执行清理前的工作
clean 清理上一次构建生成的所有文件
post-clean 执行清理后的工作
default 构建项目(最核心)
compile 编译
test 测试
package 打包
install 安装jar包到本地仓库中
site 生成项目站点
pre-site 生成项目站点前要完成的工作
site 生成项目的站点文档
post-site 生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上
pom.xml常用元素
modelVersion 指定了当前pom版本
groupId 反写的公司 址+项目名
artifactId 项目名+模块名
version 版本 第一个0表示大版本 ,第二个0表示大版本 ,第三个0表示大版本 0.0.1snapshot快照
packaging 打包方式 默认是jar
name 项目的描述名
url 项目的地址
description 项目描述
developers 开发人员信息
licenses 许可证信息
dependencies
dependency
scope 依赖范围
optional 设置依赖是否可选
exclusion 排除依赖传递列表
dependencyManagement 依赖管理 不会被运行
build 对构建行为提供相应支持
plugins 插件列表(指出坐标)
parent 对父模块的继承
modules 定义多个模块 一起进行编译
dependency scope:指定依赖范围
–compiler:默认的范围,编译测试运行都有效
–provided:编译测试时有效
–runtime:测试和运行时有效
–test:测试时有效
–system:与本机系统相关联,可移植性差
–import:导入的范围,只在dependencyManagement中使用,表示从其他的pom中导入dependency的配置
maven依赖:
1.建立依赖(A依赖B)
在A的pom.xml创建dependency,引用B的坐标就创建了A对B的依赖
2.间接依赖
A依赖B,B依赖C,A就间接依赖C
3.排除依赖(A依赖B,B依赖C,排除A对C的依赖)
在A对B的dependency定义下,使用exclusion引用C的坐标,就排除了A对C的依赖
依赖冲突
不同版本的构件
1.短路优先
2.先声明先优先:如果路径长度相同,则谁先声明,先解析谁
聚合:如果项目D依赖项目C,项目C依赖项目B,项目B依赖项目A,我们需要一个个安装这项项目,在Maven中有一种方式可以将多个项目一次性安装,这就是聚合的概念。简单讲就是,需要人工多次操作的,只要Maven能理解,一次性告诉他,他就能帮我们做这件单调烦人的事情了。——使用
继承:多次使用到的依赖,比如:单元测试,没有必要在所有的项目中都引用一下,此时就可以采用继承的方式来实现,先来一个父级的POM.XML然后再继承此POM.XML。
1. packaging 改为pom。
2. dependencyManagement 中并不提取依赖,只进行统一管理。
3. property中定义了junit版本 ,之后可以引用。
4. 父类parent中的main和test没有意义,可以删除。
父类pom:
子类pom:
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树Java概览Maven基础92745 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!