目录
- 一、Maven简介
- 二、创建一个Maven项目
-
- [2.1 社区版创建](#2.1 社区版创建)
- [2.2 专业版创建](#2.2 专业版创建)
- 三、Maven核心功能
-
- [3.1 项⽬构建](#3.1 项⽬构建)
- [3.2 依赖管理](#3.2 依赖管理)
-
- [3.2.1 依赖传递](#3.2.1 依赖传递)
- [3.2.2 依赖排除](#3.2.2 依赖排除)
- [四、Maven Help插件](#四、Maven Help插件)
- [五、Maven 仓库](#五、Maven 仓库)
-
- [5.1 本地仓库](#5.1 本地仓库)
- [5.2 中央仓库](#5.2 中央仓库)
- [5.3 私有服务器(私服)](#5.3 私有服务器(私服))
- [六、Maven 设置国内源](#六、Maven 设置国内源)
-
- [6.1 配置当前项⽬setting](#6.1 配置当前项⽬setting)
一、Maven简介
官方解释:
Maven, a Yiddish word meaning accumulator of knowledge, began as an attempt to simplify the build processes in the Jakarta Turbine project. There were several projects, each with their own Ant build files, that were all slightly different. JARs were checked into CVS. We wanted a standard way to build the projects, a clear definition of what the project consisted of, an easy way to publish project information, and a way to share JARs across several projects.
The result is a tool that can now be used for building and managing any Java-based project. We hope that we have created something that will make the day-to-day work of Java developers easier and generally help with the comprehension of any Java-based project.
翻译:Maven 是一个意第绪语单词,意思是知识的积累器,最初是为了简化 Jakarta Turbine 项目的构建过程。有几个项目,每个项目都有自己的 Ant 构建文件,但都略有不同。 JAR 已签入 CVS。我们想要一种构建项目的标准方法、项目组成的清晰定义、发布项目信息的简单方法以及跨多个项目共享 JAR 的方法。
结果是一个现在可用于构建和管理任何基于 Java 的项目的工具。我们希望我们所创建的东西能够使 Java 开发人员的日常工作变得更加轻松,并且通常有助于理解任何基于 Java 的项目。
通俗讲解:Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包。
二、创建一个Maven项目
IDEA本⾝已经集成了Maven, 我们可以直接使⽤, ⽆需安装。
2.1 社区版创建
步骤:
- New Project
- New Project->修改项目->名字Maven->create
- 点击New Project创建新文件
- 在创建文件界面选择New Project,修改项目名字,再点击Build system行的Maven选项,最后点击create创建即可。
- 当创建的文件里面有pom.xml,那么就创建成功了。
2.2 专业版创建
步骤:
- New Project
- Maven->修改项目名字->Finish
- 点击New Project创建新文件
- 在创建文件界面选择Maven,点击Next即可
- 修改项目名字,最后点击Finish创建即可。
- 当创建的文件里面有pom.xml,那么就创建成功了。
三、Maven核心功能
Maven核心功能主要体现在两个⽅⾯:
- 项⽬构建
- 管理依赖
3.1 项⽬构建
Maven 提供了标准的,跨平台(Linux, Windows, MacOS等)的⾃动化项⽬构建⽅式, 当我们开发了⼀个项⽬之后, 代码需要经过编译, 测试, 打包, 发布等流程, 每次代码的修改, 都需要经过这些流程, 如果代码反复调试修改, 这个流程就需要反复进⾏, 就显得特别⿇烦, ⽽Maven 给我们提供了
⼀套简单的命令来完成项⽬的构建.
- 在界面右边界的Maven点击
- 里面就会有Maven提供的一系列命令
3.2 依赖管理
依赖配置
依赖: 指当前项⽬运⾏所需要的jar包.
如果使⽤Maven, 我们只需要在pom.xml中引⼊mysql-connector-java的依赖就可以了
java
<dependencies>
<!--⾥⾯放置项⽬的依赖坐标, 可为多个 -->
</dependencies>
- 在pom⽂件 标签内, 添加依赖坐标
java
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
引入之前会爆红:
- 点击刷新按钮, 引⼊新加⼊的依赖jar包
后续有添加新的jar包, 或者修改jar包版本, 都需要通过该⽅式在项⽬中添加依赖.
刷新后就不会爆红了:
3.2.1 依赖传递
早期我们没有使⽤maven时, 向项⽬中添加依赖的jar包,需要把所有的jar包都复制到项⽬⼯程下.
⽐如 A 依赖B, B依赖C, 那么 A项⽬引⼊B 的同时, 也需要引⼊C, 如果我们⼿动管理这个依赖, 这个过程就会⽐较⿇烦, 我们需要知道每个库都依赖哪些库, 以及这些依赖之间的版本是如何关联的。
但使⽤maven的话, 就可以避免管理所需依赖的关系。我们只需要在pom⽂件中, 定义直接依赖就可以了, 由于maven的依赖具有传递性,所以会⾃动把所依赖的其他jar包也⼀起导⼊
3.2.2 依赖排除
当前阶段我们需要依赖的库并不多, 但随着项⽬的越来越复杂, 库之间的依赖关系也会变得越来越复杂.
如上图中, 如果项⽬A不需要Jar B,也可以通过排除依赖的⽅式来实现.
java
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>6.0.6</version>
<!--排除依赖-->
<exclusions>
<exclusion>
<artifactId>spring-jcl</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
四、Maven Help插件
当项⽬⽐较复杂时, 我们就会有Jar包冲突的问题, 这时候就需要去解决依赖冲突. 解决冲突之前,需要先找到冲突, 我们可以使⽤Maven Help插件来观察包和包之间的依赖关系.
安装插件:
File-> Settings ->Plugins -> 搜索'Maven Help' -> 找到对应插件, 点击Install 安装即可, 安装
后需要重启下idea, 才能⽣效
- 先在界面左上角点击File,再点击 Settings
- 再点击Plugins ,然后搜索'Maven Help' , 找到对应插件, 点击Install 安装即可
- 再点击右边界的Maven,可以看到Jar包之间的依赖关系。
五、Maven 仓库
我们通过短短⼏⾏代码, 就把依赖jar包放在了项⽬⾥, 具体是如何做的呢?
这个代码, 我们称之为 "坐标", 也就是唯⼀的. 在Maven中, 根据 groupId、artifactId、version 的配置, 来唯⼀识别⼀个 jar 包, 缺⼀不可.
当我们在pom⽂件中配置完依赖之后, 点击刷新, Maven会根据坐标的配置, 去仓库⾥寻找Jar包,并把他下载下来, 添加到项⽬中. 这个Jar包下载的地⽅就称为仓库.
Maven仓库的本质就是⼀个⽬录(⽂件夹),这个⽬录被⽤来存储开发中所有依赖(jar包, 插件等).
Maven仓库分为两⼤类: 本地仓库和远程仓库. 其中远程仓库⼜分为中央仓库, 私服 和其他公共库
5.1 本地仓库
本地仓库: ⾃⼰计算机上的⼀个⽬录(⽤来存储jar包)
当项⽬中引⼊对应依赖jar包后,⾸先会查找本地仓库中是否有对应的jar包
- 如果有,则在项⽬直接引⽤
- 如果没有,则去中央仓库中下载对应的jar包到本地仓库
本地仓库地址可以通过Maven配置查看:
- 先在界面左上角点击File,再点击 Settings
- 然后搜索Maven,再点击Maven。
5.2 中央仓库
中央仓库: maven 软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联⽹. 由 Maven 团队维护,全球唯⼀.
仓库地址:地址
可以通过 网站 这个⽹站来查询并下载
我们可以把⾃⼰写好的Jar包上传到中央仓库(具备⼀定的要求), 也可以从中央仓库下载Jar包 查找Jar的坐标
5.3 私有服务器(私服)
私服: ⼀般由公司团队搭建的私有仓库.
私服属于某个公司,或者某个部⻔, 往往需要⼀定权限.
有了私服之后, Maven依赖下载的顺序⼜发⽣了变化.
下载顺序:
- 先从本地仓库获取, 本地仓库存在, 则直接返回
- 如果本地仓库没有, 就从私服请求, 私服存在该资源, 就直接返回
- 如果私服上不存在该资源,则从中央仓库下载, 中央仓库不存在, 就报错了...
- 如果中央仓库中存在, 就先缓存在私服上之后,再缓存到本地仓库⾥, 再为Maven的下载请求提供服务
六、Maven 设置国内源
因为中央仓库在国外, 所以下载起来会⽐较慢, 所以咱们选择借助国内⼀些公开的远程仓库来下载资源。
6.1 配置当前项⽬setting
-
先在界面左上角点击File,再点击 Settings
-
然后搜索Maven,再点击Maven。
-
查看配置⽂件的地址, 如上图所⽰, Maven配置⽂件地址为:C:\Users\ys-lenovo.m2\settings.xml
-
配置国内源 Maven仓库默认在国外https://mvnrepository.com/,国内使⽤时会⽐较慢,我们可以更换为阿⾥云的仓库
java
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿⾥云公共仓库</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
- 设置新项⽬的setting
上述配置的内容, 只对当前项⽬⽣效, 为了让后续新建的项⽬也⽣效, 需要重新设置⼀下新项⽬的Settings
点击界面左上角点击File,再点击 New Projects Setup 再点击Settings for New Projects...
看当前仓库是否一致即可。