maven是一个服务于Java平台的自动化构建工具。
学习maven之前,我们是手动导jar包,然后才能使用。maven工程将真正的jar包放在仓库里,项目中只要放jar包的坐标即可。这样一来我们的项目就会小很多
maven可以管理项目的整个生命周期
依赖和插件都可以称为构件,maven中存储构建的地方称为仓库
先确保Java装上了,然后找一个教程装一下,配置好环境变量之后,打开cmd,使用命令mvn -version
查看是否配置成功
仓库就是存放jar包的地方
maven仓库分为本地仓库、第三方仓库 、中央仓库
1、本地仓库,自己使用,就是你电脑上用来存放jar包的仓库,默认本地仓库的位置在user.dir/.m2/repository。当项目中需要使用一些插件或者jar包的时候,优先会在本地仓库查找
2、私服,也叫第三方仓库,一般有公司自己设立,只为本公司内部共享使用。
3、中央仓库,全球使用,地址:https://mvnrepository.com
当你在pom.xml中导入一个jar包,maven会帮你首先会在本地仓库找,找不到去私服(如果有的话),私服找不到去中央仓库找
几乎所有项目都需要使用到库,而这些库有可能依赖于其他库,没有maven之前我们导入jar包,但是很容易出问题(版本、库之间的依赖都可能能导致问题)。所以我们使用maven来帮我们进行依赖管理。
当我们需要一个库的依赖的时候,只需要引入它的依赖坐标即可
maven项目中都有一个pom文件,maven就是通过pom文件来查找依赖
坐标依赖:
组织/父项目名称 项目名称 项目版本号 依赖的类型,对应项目的packaging,默认是jar 依赖的作用域 配合 scope=system 时使用 标记是否为可选依赖 组织/父项目名称 项目名称
坐标用来定位某一jar包在中央仓库的位置,通过groupId 、artifactid、version几条信息可以组成一个路径信息,从中央仓库获取资源
maven坐标使用三个向量在仓库中确定唯一一个jar包:①groupId ②artifactid ③version
依赖的作用域:
如图所示, 标签中有一个子标签,就是用来配置依赖的作用域。这个标签中的内容可以取的值有:compile(默认)、test、runtime、provided、system、import
maven的生命周期就是为了对所有项目的构建过程进行抽象和统一,包括对项目的清理、初始化、编译、测试、打包、集成测试、部署等几乎所有的项目构建步骤。
maven的生命周期各个环节都是由各种插件完成的。
maven有三个相互独立的生命周期,这三个生命周期不可以看成一个整体:Clean
、Default
、Site
clean生命周期:
作用:清理项目,在真正的构建项目之前进行一些清理工作。
一共包含三个阶段:
1、pre-clean:执行一些需要在clean之前完成的工作
2、clean:移除所有上一次构建生成的文件
3、post-clean:执行一些需要在clean之后立刻完成的工作
default生命周期:
作用:Default是构建项目的核心部分,编译、测试、打包、部署等等,default是maven生命周期中最重要的一个,绝大部分工作都是在这个生命周期中完成的
compile:编译项目的源代码
install:将pom依赖导入依赖的对应jar包安装到本地仓库(装到本地maven仓库,下一次别的项目也能用)
deploy:将最终的包复制到远程仓库,让其他开发人员与项目共享
test:使用合适的单元测试框架运行测试,这些测试代码不会被打包或部署
package:将编译好的代码打包成可以发布的格式,如jar
…还有好多别的,想了解的自己查一下
site生命周期:
作用:建立和发布项目站点
pre- site
site:生成项目站点文档
post-site
site-deploy:将生成的项目站点发布到服务器上
1、简介:
maven本质上是一个插件执行框架,maven的核心并不执行任何具体的构建任务。所有的执行任务都是由一个一个插件来完成的。
每一个任务都对应了一个插件目标,每个插件会有一个或多个目标。用户可以通过两种方式调用maven插件目标:
1、将插件目标与生命周期绑定,这样用户在命令行操作生命周期的命令相当于执行了插件任务。
例如Maven默认将maven-compiler-plugin的compile目标与compile生命周期阶段绑定,因此命令mvn compile实际上是先定位到compile这一生命周期阶段,然后再根据绑定关系调用maven-compiler-plugin的compile目标。
2、直接在命令行指定要执行的插件目标
例如mvn archetype:generate 就表示调用maven-archetype-plugin的generate目标,这种带冒号的调用方式与生命周期无关。
这些都是maven的基本插件,pom的plugins标签里面什么都不写,这些插件都会存在,是第一种调用插件目标的方式(与生命周期绑定的插件)。
如果创建的是boot项目的话,会自动生成一个spring-boot的依赖
如果我们想使用其他插件的话,在添加插件。常用的插件去搜一下,用的时候CV进去就行
1、有的人maven自从装上一直不能用,可能是因为IDEA版本和maven版本有冲突,2021版IDEA亲测不行,给IDEA升个级就OK了
2、使用maven的时候,如果maven是自己配置的,那么需要到setting中去override一下maven配置文件和仓库的地址。
位置的地方在:
从上图可以看到我的默认是在C:\Users\cr.m2\settings.xml、C:\Users\cr.m2\repository这个地方。这个不是我自己配置的maven位置,需要改一下:钩住后面的Override选项,然后选择自己的maven地址。如下图:
然后apply一下。
3、本地没有的依赖,去maven仓库找一个,进入https://mvnrepository.com,把需要的依赖搜出来,然后找一个用的人比较多的,把坐标C下来,V到你的项目中去
点进去,然后CV进项目里
然后点开右边maven管理,加载一下就能用了