Maven学习笔记
by ——黑马程序员 https://www.bilibili.com/video/BV1Ah411S7ZE
简介
为了解决jar包不统一、不兼容的问题而提出的工具。Maven本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。
项目构建:提供标准、跨平台的自动化项目创建方式
依赖管理:方便管理项目依赖的资源
统一开发结构:提供标准的、统一的项目结构
下载略,idea自带Maven
基础概念
仓库:用于存储资源,包含各种jar包
- 中央仓库保存着大部分的jar包,本地仓库需要从中央或者私服中获取jar包。私服访问速度比中央仓库快,且一定范围内共享资源,仅对内开放,不对外共享
坐标:Maven用于描述仓库中资源的位置,在该网址https://mvnrepository.com/检索需要的仓库名
以mybatis-plus坐标为例:
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
</dependency>
-
一般组成是
groupId:定义当前Maven项目隶属组织名称,eg org.mybatis
artifactId:定义当前Maven项目名称,一般为模块名称,eg CRM
version:定义当前版本号
packaging:定义该项目的打包方式
如果是单独安装的maven需要修改本地仓库的地址,需要打开maven安装包内的conf文件中的settings.xml,将里面的setting中的localRepository文件路径改为自己需要的即可。还可以修改下载镜像,具体需要可以再查,这里不详细展开。
项目
结构如下:
mvn compile #编译
mvn clean # 清理
mvn test #测试
mvn package #打包
mvn install #安装到本地
Idea启动
直接配置maven即可
创建之后,就会有目录了,在pom.xml中加入依赖即可,如:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
</dependencies>
右侧maven按钮可以快速执行指令
还可以利用Maven Archetype,依照已有的模版创建
Java 是quickstart,web是webapp
添加Tomcat依赖(一般用springboot会内置Tomcat,不需要单独添加了)
依赖管理
依赖指当前项目运行所需的jar,一个项目可以设置多个依赖
依赖传递
- 直接依赖:在当前项目中通过依赖配置建立的关系
- 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
- 当依赖产生冲突的时候,后配置的覆盖先配置的,层级约深,优先级越低。同层级下配置顺序靠前的优先级高
可选依赖:加optional字段,将其修改为true,即可隐藏依赖
排除依赖:主动断开依赖的资源,即某个依赖通过其他依赖引入但你不希望它被包含在项目构建中。被排除的资源无需指定版本。
<exclusions>
<exclusion>
<groupId>com.example.group</groupId>
<artifactId>dependency-C</artifactId>
</exclusion>
</exclusions>
依赖范围,默认可以在任何地方使用,通过scope标签设置作用范围
依赖范围的传递性
生命周期与插件
Maven构建生命周期描述的是一次构建过程经历了多少个事件
- clean:清理工作
- pre-clean:执行clean前需要的工作
- clean:移除上一次构建生成的文件
- post-clean:执行clean后立刻要完成的工作
- default:核心工作,如编译、测试、打包、部署等
- site:产生报告、发布站点等
插件:与各个生命周期内的阶段绑定,在执行对应生命周期时执行对应的插件功能。添加自定义的方法具体可以看官网文档操作
ult:核心工作,如编译、测试、打包、部署等
- site:产生报告、发布站点等
插件:与各个生命周期内的阶段绑定,在执行对应生命周期时执行对应的插件功能。添加自定义的方法具体可以看官网文档操作