Maven基础
项目管理和构建Java项目的工具,基于项目对象模型(POM)的概念
Apache Maven是一个项目管理和构建工具,用它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建,报告,和文档
- 提供了一套标准化的项目结构(使得不同的IDEA,使用同一项目结构,使得项目可以在不同的idea中通用)
- 提供了一套标准化的构建流程 (编译→测试→打包→发布)
- 提供了一套依赖管理机制
依赖管理就是管理你的项目所依赖的第三方资源,maven使用标准的坐标来管理依赖 使用<dependencies>表签导入依赖
例如
依赖范围
maven的模型
仓库
1 本地仓库:
3 中央仓库:https://repo1.maven.org/maven2/
2 远程仓库(私服):一般由公司团队搭建的私有仓库
MAVEN的安装配置
下载
配置环境变量
这里的路径(变量值)多了一个\bin 去掉就可以了
变量值maven的地址
因为我们在系统运行需要bin文件夹中二进制可执行文件 mvn
所需我们还要在系统path中添加一个环境变量
安装成功测试
cmd 中查看 maven的版本 mvn -version 能够查看版本就成功了
IDEA中配置maven
File->settings->File | Settings | Build, Execution, Deployment 在搜索框 搜索 MAVEN就找到maven的配置页面了
maven中的seting.xml文件 了解更多 学习maven使用文档
如果我们的jar包下载太慢,我们可以配置阿里的私服,打开seting.xml文件。在镜像标签中添加子标签,按照自带的注释内容填写就行
localRepository 本地仓库配置标签
Maven的基本使用
-
常用命令
- compile:编译
- clean:清理
- test:测试
- package:打包
- install:安装
-
Maven的生命周期
-
-
Maven 对项目构建的生命周期划分为3套
-
clean:清理工作
-
default:核心工作,例如编译,测试,打包,安装等
-
site:产生报告,发布站点等
-
-
default 构建声明周期
maven 坐标
- Maven坐标是资源的唯一标识,通过使用坐标来定义项目或引入项目中需要的依赖
- 坐标的组成
- groupId:定义当前项目所属组织的名称(通常是域名反写,例如org.apache)
- artifactid:当前Maven项目的名称(通常是模块名称)
- version:当前项目的版本号
SNAPSHOT不是稳定的版本
依赖冲突
聚合
由于依赖传递会产生依赖冲突问题
冲突原则
可使用<optionnal>true</optionnal>可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递性(我隐藏自己的依赖不让别人用,不透明)
<exclutions><exclution></exclusion></exclutions> 排除依赖 隐藏当前资源对应的依赖关系(别人不用我的依赖,不需要)
依赖冲突
打包方式
<packaging>pom 聚合工程的打包方式
<modules><module> 路径(从聚合工程的pom所在位置开始)<module><modules>管理的模块
继承
<parent> <relativePath>父工程相对路径,可以使我们快速的找到我们的父工程</relativePath></parent>
属性
<properties>
<justauth-spring-boot-starter.version>1.3.4</justauth-spring-boot-starter.version>
</properties>同一版本控制 比如一些包你需要一样的版本,改一个其他的也要跟着变
<dependency>
<groupId>com.xkcoding.justauth</groupId>
<artifactId>justauth-spring-boot-starter</artifactId>
<version>${justauth-spring-boot-starter.version}</version>
<exclusions>
<exclusion>
<artifactId>hutool-core</artifactId>
<groupId>cn.hutool</groupId>
</exclusion>
<exclusion>
<artifactId>fastjson</artifactId>
<groupId>com.alibaba</groupId>
</exclusion>
</exclusions>
</dependency>
如果在配置文件中需要使用(资源文件需要引用pom中的属性)

这种写法就不局限于哪个子项目用这个配置了

列如环境变量属性
${等号前面的key写进去}就能获得对应的版本了;
版本管理

多环境配置



跳过测试

但是这种会全部跳过测试。

命令跳过测试
私服

https://help.sonatype.com/repomanager3/download
