maven

maven

1、maven概念

  • maven是一个服务于Java平台的自动化构建工具。

  • 学习maven之前,我们是手动导jar包,然后才能使用。maven工程将真正的jar包放在仓库里,项目中只要放jar包的坐标即可。这样一来我们的项目就会小很多

  • maven可以管理项目的整个生命周期

  • 依赖和插件都可以称为构件,maven中存储构建的地方称为仓库

2、安装

先确保Java装上了,然后找一个教程装一下,配置好环境变量之后,打开cmd,使用命令mvn -version查看是否配置成功

3、maven仓库

仓库就是存放jar包的地方

maven仓库分为本地仓库第三方仓库中央仓库

1、本地仓库,自己使用,就是你电脑上用来存放jar包的仓库,默认本地仓库的位置在user.dir/.m2/repository。当项目中需要使用一些插件或者jar包的时候,优先会在本地仓库查找

2、私服,也叫第三方仓库,一般有公司自己设立,只为本公司内部共享使用。

3、中央仓库,全球使用,地址:https://mvnrepository.com

  • 当你在pom.xml中导入一个jar包,maven会帮你首先会在本地仓库找,找不到去私服(如果有的话),私服找不到去中央仓库找

3、依赖管理

几乎所有项目都需要使用到库,而这些库有可能依赖于其他库,没有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_第1张图片

3、maven生命周期

  • maven的生命周期就是为了对所有项目的构建过程进行抽象和统一,包括对项目的清理、初始化、编译、测试、打包、集成测试、部署等几乎所有的项目构建步骤。

  • maven的生命周期各个环节都是由各种插件完成的。

  • maven有三个相互独立的生命周期,这三个生命周期不可以看成一个整体:CleanDefaultSite

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:将生成的项目站点发布到服务器上

4、maven插件

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的依赖

maven_第2张图片

如果我们想使用其他插件的话,在添加插件。常用的插件去搜一下,用的时候CV进去就行

5、使用maven

1、有的人maven自从装上一直不能用,可能是因为IDEA版本和maven版本有冲突,2021版IDEA亲测不行,给IDEA升个级就OK了

2、使用maven的时候,如果maven是自己配置的,那么需要到setting中去override一下maven配置文件和仓库的地址。

位置的地方在:

maven_第3张图片

从上图可以看到我的默认是在C:\Users\cr.m2\settings.xml、C:\Users\cr.m2\repository这个地方。这个不是我自己配置的maven位置,需要改一下:钩住后面的Override选项,然后选择自己的maven地址。如下图:

maven_第4张图片

然后apply一下。

3、本地没有的依赖,去maven仓库找一个,进入https://mvnrepository.com,把需要的依赖搜出来,然后找一个用的人比较多的,把坐标C下来,V到你的项目中去

maven_第5张图片

点进去,然后CV进项目里

maven_第6张图片

然后点开右边maven管理,加载一下就能用了

maven_第7张图片

 

 

你可能感兴趣的:(maven)