在开始之前我先来谈一谈我的学习方法,我在学习认识新东西之前是按照三步走来学习的,即:是什么?做什么?怎么学?
那接下来就让我们按照三步走来学习一下Maven
Maven就是服务于Java平台的自动化构建工具;简单来说就是我们的项目管理工具
# 构建什么:把项目工程经过编译,得到的编译结果,部署在服务器上的整个过程;
# 编译: .java文件通过javac编译器编译成 .class型的字节码文件
它是一个Apache的开源项目,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理,为了不重复造轮子。
Maven最主要的体现在了2个词 “项目”和“管理”!加在一起就是项目管理。
两个项目A,B,项目A需要依赖一些jar包,项目B也需要依赖这些jar包,那么此时如果都把jar包引入到项目中;再比如要更新jar版本,所以又得重新下载,重新部署到项目中(部署到lib中);以上就是在重复造轮子。我们应该把这些所有的jar包放到一个地方,需要用的时候过去取即可。而Maven就帮我们做了这些事情(这就是Maven的项目管理)
Maven把我们需要的jar包都放到一个仓库(repository)中,统一管理,(做到复用、多项目可共同使用)每个jar包的对应位置用一个坐标表示;
坐标三要素:文件夹+名字+版本号
如何定位这个位置————文件夹+名字+版本号=坐标 就可以定位到唯一的jar包;
# 关于仓库:
本地仓库(本机上从中央仓库下载过来的jar包)
中央仓库(Maven免费提供的)
远程仓库(企业自己的—>私服)
使用时,若本地仓库可以找到jar包,正常使用;本地仓库找不到jar包,就去远程仓库查找,远程找不到,就去中央查找,若都找不到,就会报错;再任何一个仓库中找到jar包就会下载到本地,做到复用
打开编辑器,new一个project
根据 坐标三要素:文件夹+名字+版本号
# groupId: 代表jar包所来源的渠道;对应文件夹的名;
com.alibaba;com.duyi;
# artifactId: 代表项目的唯一名字maven-duyi-demo.jar ; common-io.jar
# version: 代表版本号 1.0 2.0 3.0
1.0-SNAPSHOT(快照版本,不稳定)
1.0-RELEASE(发布版本,稳定)
Maven项目打开后就会有约定好的目录结构,不用我们自己再去配置;体现的设计思想就是:“约定优于配置”
Mvn的核心配置文件:pom.xml; 里面含有项目被打包后的坐标三要素
这部分可以自行参考b站视频,绝对讲得比我好;
引入一些依赖可以查找坐标的网站https://www.mvnrepository.com/
Maven的依赖有递进关系,项目A依赖了jar包B,而jar包B又依赖了jar包C,所以也相当于项目A依赖着jar包C.
方法:**利用 < dependencies>标签**
我们原本只想引入jar包B,不想要jar包C;或者说引入了jar包B,现在不想要了;如何剔除?
方法:利用 < exclusions >标签
1)我们构建项目的流程如下:
编译 测试 运行 打包 安装 部署
compile test runtime package install deploy
看依赖在哪个过程使用
2)依赖使用的范围
利用< scope >标签声明 代表依赖在哪个过程使用eg:runtime
compile 缺省值 (也就是编译时使用) 伴随着项目的整个生命周期而存在
provided 已提供的 代表我们的使用的jar是已经提供好的,不需要再打包到项目最后的jar包里
lruntime 运行时使用
test 测试时使用
system 自定义依赖jar包的位置(不推荐使用)
查看依赖树的目的:更好的解决jar包冲突的问题
方式一: IDEA右键 ——Diagrams——Show Dependencies(比较直观)
方式二: Terminal中输入:mvn dependency:tree常用的命令