简述
maven是一个项目管理工具,用来管理各种我们编写代码过程中需要用到的第三方包。在maven出现之前,如果需要用到某些第三方类的时候,我们往往会对应的官网下载jar包,然后将jar包放入一个新建的lib目录里并标记为library。随着工程量越来越大,要依赖的第三方jar包也越引越多,从一个工程到另一个工程时往往会伴随迁移。而引入maven之后,这些问题都能得到解决。
maven本质上就是一个工具,这个工具的功能是创建项目和管理依赖。当开发中需要某个第三方类时,可以在maven的核心文件—pom.xml中引入依赖的三维坐标,groupId、artifactedId、version,分别表示公司或组织名、产品线或开发方向名、版本号,这个三维坐标唯一标识了一个依赖。依赖引入的过程是这样的:首先第三方依赖库是apache组织在管理的,管理方式是搭建了一个国外网站,它提供了一个(中央仓库)[https://mvnrepository.com/],里面各式各样的依赖都有,但是我们国内去访问国外网站网络比较速度比较缓慢,由此国内一些公司开发了一些镜像,这些镜像可以理解为同步了中央仓库的内容,使得我们访问中央仓库就像在我们国内访问一样快速。当我们在pom.xml中要引入我们没有的第三方依赖时,这些依赖先去镜像里去找,找到了后将依赖下载到本地仓库(这个一般是我们自己创建的)。因此如果在下次遇到需要引入该依赖的时候,系统会优先去本地仓库找,因为一些原因找不到则会去镜像里中,如果同步不及时我们则会去国外的中央仓库里去找。
功能
工程创建
具体来讲就是两个内容:一个是如何将一个Java SE项目改变为Maven项目;另一个内容就是如何在IDEA中创建和使用Maven。
将一个纯SE项目改变为Maven项目有以下操作:
- 新建src/main/java和src/main/resources,在project structure的moudle中分别标记为source和resources
- 新建src/test/java,在project structure中将其标记为test
- 新建pom.xml文件,同时提供三维坐标和一些其他配置,比如与工程相关的。
以上三个步骤就算创建了maven项目,其价值体现在我们写代码过程中需要用到第三方依赖的时候不必去官网下载,只需要在pom.xml文件中提供三维坐标。依赖就自动引入了。
管理依赖
引入依赖之后会产生一些问题,比如依赖范围、依赖冲突、依赖传递和提取公共变量。
搜索依赖
在maven官网mvnrepository中搜索相关的依赖,然后复制其三维坐标,粘贴到pom.xml即可
依赖范围
包括compile、test、provided、runtime。
- compile,表示任何时候这个依赖都有效,也是依赖默认的范围;
- test,表示只有在测试的时候才发挥依赖的作用,比如Junit依赖
- provided,表示编译、测试的时候有效,只有运行的时候无效。这是由于在某些时候,代码需要在容器中运行,容器已经提供了运行的依赖,并且运行是被指定要用容器的依赖
runtime,表示只有运行的时候有效。比如数据库驱动依赖,涉及到类加载机制。
依赖冲突
引入了依赖A,A包含依赖C的版本1;
引入了依赖B,B包含依赖C的版本2.
那么系统究竟该引用C的哪个版本呢?
有以下三个规则:第一声明原则
若A先声明,就依赖C1版本
- 就近原则
若A的路径更近,就依赖C1版本
- 手动排除
依赖传递
提取公共变量
IDEA中依赖的基础操作指令
基础操作指令
- 写代码,开发
- 编译,complie
.java—>.class
- 测试,test
- 打包,package
.class文件转为jar包或war包
- 安装,install
将jar包或war包放到本地仓库中
- 部署,deploy
将本地仓库中的jar包或war包放到正式环境的服务器中
执行指令的三种方式
①maven的bin目录下文件搜索栏中直接cmd命令
②IDEA中的terminal窗口
③IDEA右侧栏自带maven的各种命令和jar包等