Maven
学习资源:https://www.bilibili.com/video/BV1dp4y1Q7Hf?p=1
一、 简介
-
定位:项目构建工具
-
功能
-
管理jar文件;自动下载jar文件及其文档,源代码
-
管理jar直接的依赖,自动下载依赖
-
管理jar版本
-
编译程序,.java到.class
-
打包文件,形成jar文件或者war文件
-
部署项目
-
-
构建
-
面向过程的,即完成代码的 编译,测试,打包,部署等等
-
maven支持的构建包括
-
清理,把之前项目编译的内容删除
-
编译,将源代码编译成可执行代码(批量,javac一次只能编译一个文件)
-
测试,同时执行多个ut
-
报告,生成测试结果文件
-
打包,将项目中所有的class文件,配置文件及资源发到一个压缩文件中,扩展名是.jar;对于web应用,对应的扩展名称是.war
-
安装,将打包生成的.jar、.war安装到本地repo中
-
部署(不常用)
-
-
-
maven的核心概念
-
POM: 一个文件pom.xml
项目对象模型;maven将一个项目当做模型使用。同过这个文件控制maven项目的构建,管理jar依赖 -
约定的目录结构:maven中项目的目录及文件的位置是有规定的
-
坐标:是一个唯一的字符串;表示资源的
-
依赖管理:管理项目中可以使用的jar文件
-
=以下几项作为了解=
-
仓库管理:资源的存放位置
-
生命周期:maven工具构建项目的过程就是生命周期
-
插件及目标
-
继承
-
聚合
-
-
maven的安装及配置
-
子目录
-
bin:执行程序,主要是mvn.cmd
-
conf:maven工具本身的配置文件 settings.xml
-
-
二、maven的核心概念
-
maven工程约定的目录结构
-
每一个maven的项目在磁盘上都是一个文件夹(项目 Hello)
Hello/
—/src
------/main #存放主程序java代码和配置文件
----------/java #程序包及其中的java文件
----------/resources #配置文件
------/test #放置测试程序代码及文件
----------/java #程序包及其中的java文件
----------/resources #配置文件
—pom.xml #maven的核心文件(maven 项目必须有)
-
-
mvn compile
编译src/main目录下的所有java文件;编译完成后会在项目目录下生成一个结果目录(target,里面存放着编译完的class)-
为什么要下载
- maven工具执行的过程中需要很多插件(java类—jar文件)完成的
-
下载了什么
- jar文件 ----也叫插件,完成某些功能
-
从哪里下载的
- httpsL://repo.maven.apache.org 中央仓库地址
-
存到了哪里
-
配置文件:apache-maven-3.6.3\conf\settings.xml
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oKTyByGd-1618141936547)(media/616a50ce7c605490f76a8daa41cb7576.png)]
-
-
maven仓库的概念
-
仓库的作用
- 存储maven使用的插件;代码中使用的jar包
-
仓库的分类
-
本地仓库;计算机上的路径
-
远程仓库;
-
需要使用网络下载 中央仓库
-
中央仓库的镜像 (能够减小中央仓库的压力)
-
私服;公司内部的局域网;不对外
-
-
-
仓库的使用
- maven去查本地仓库 <> 私服 <> 镜像 <> 中央仓库(很多种类)
-
设置本地仓库
-
放在<localRepository>E://maven//LocalRepo</localRepository>配置的路径中
-
配置文件:apache-maven-3.6.3\conf\settings.xml
-
-
-
pom.xml的介绍
-
groupId; artifactId; version 统称为
坐标;能够唯一标识资源(jar)同时,这三个字符串对应着本地仓库对应依赖所在的路径-
例:E:\maven\LocalRepo\log4j\log4j\1.2.12
-
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
-
<dependency>
-
<groupId>log4j</groupId>
-
<artifactId>log4j</artifactId>
-
<version>1.2.12</version>
-
</dependency>
<groupId>公司域名倒写</groupId>
<artifactId>自定义项目名称</artifactId>
<version>自定义版本号(带SNAPSHOT表示不稳定版本)</version>
-
-
-
如何使用坐标在网络上找到资源
-
https://mvnrepository.com/ maven搜索使用的中央仓库;使用groupId /
artifactId作为关键词;e.g: mysql-
https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.9
-
-
-
maven的生命周期;常用命令;插件
-
maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
-
maven的命令:maven可以独立使用,通过命令完成maven的生命周期的执行。
-
mvn compile //
只编译main/java下的;同时在编译过程中,mvn会将resources下的内容copy到target/classes下面 -
mvn test-compile // 只编译test/java下的
-
mvn clean //
清理(删除target目录下的内容,但是已经下载的包不会删除) -
mvn test // 测试(回生成测试报告)
-
mvn package //
打包主程序(会编译,编译测试,测试,并且按照pom.xml配置把主程序打包成jar或者war) -
mvn install //
安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中) -
mvn deploy //
部署主程序(会把主程序打包,按照本工程的坐标保存到仓库中,并且还会保存到私服仓库中) -
注意:执行上述命令必须在pom.xml所在目录下
-
-
maven的插件:maven命令执行时,真正完成功能的是插件,就是一些jar文件,一些类
-
-
其他
-
插件也可以在pom.xml中进行配置
-
三、Maven在IDEA中的使用
-
IDEA中配置maven
四、Maven常用技巧
-
pom依赖缺失报错解决
-
IDEA导入Maven工程
五、依赖范围scope
-
scope的值有 compile(默认);test;provided
表示依赖的使用范围,也就是在Maven构建的哪些阶段有作用
[编译,测试,打包,安装,部署]
-
test:只在测试阶段起作用;
-
compile:编译及声明周期之后阶段; 打包时会放在lib下
-
provided:提供者自带(只在编译测试阶段需要;打包安装的时候不需要)
-
六、Maven常用操作
-
属性设置 properties
-
全局变量(自定义属性)
-
在<properties>中通过自定义标签声明变量(标签名就是变量名)
-
在pom.xml文件中的其他位置,
-
用法:${标签名}
-
应用场景: 多个相同的版本号
-
例:<spring.version>5.2.5</spring.version>
-
-
-
指定资源位置插件
-
作用
-