手把手教你maven的安装与配置
- 一、Maven 是什么
- 二、Maven 的安装
- 1. 下载
- 2. 环境配置
- 三、Maven 的配置文件
- 1. 本地仓库
- 2. 远程仓库
- 3. 代理服务器
- 4. 服务器认证
- 5. 其他选项
- 6. 配置示例
- 四、对接IDEA
提起Maven,相信大家并不陌生,对于一些java开发者,可能除了JDK,第二个要学的内容就是Maven了。今天,我们就踏上Maven的学习之路,当然第一篇,依然还是手把手系列,从安装与配置开始。
📕作者简介:战斧,从事金融IT行业,有着多年一线开发、架构经验;爱好广泛,乐于分享,致力于创作更多高质量内容
📗本文收录于 Maven专栏 ,有需要者,可直接订阅专栏实时获取更新
📘高质量专栏 云原生、RabbitMQ、Spring全家桶、 GIT 等仍在更新,欢迎指导
📙Zookeeper Redis kafka docker netty等诸多框架,以及架构与分布式专题即将上线,敬请期待
一、Maven 是什么
Maven 是一个基于项目对象模型 (POM) 定义项目的构建工具。它可以帮助开发人员管理项目的依赖关系、构建、文档描述信息管理等。通过 Maven,开发人员可以很方便地构建、打包、发布和部署 Java 应用程序。Maven 能够自动从互联网上下载依赖库,并自动部署到本地仓库中。使用 Maven,开发人员无需手动去配置、管理项目的依赖关系,只需要在 POM 文件中声明依赖关系,Maven 就能自动帮助我们管理依赖
二、Maven 的安装
1. 下载
访问 Maven 的官网:https://maven.apache.org/download.cgi,进入下载页面。注意,下载的为二进制压缩文档。
需要注意的是。如果你使用了IDEA,并且想在IDEA中使用Maven,那么推荐根据IDEA的版本来决定使用的Maven版本,其对应关系如下
- IDEA 2022 兼容maven 3.8.1及之前的所用版本
- IDEA 2021 兼容maven 3.8.1及之前的所用版本
- IDEA 2020 兼容Maven 3.6.3及之前所有版本
- IDEA 2018 兼容Maven3.6.1及之前所有版本
当然,官网页面打不开的同学,笔者这边也给大家准备了3.9.4版本的包,点击链接即可: 3.9.4版本 。早先3.6.3版本的包也有:3.6.3版本
2. 环境配置
在我们将上述压缩包解压后,形成如下的目录
但是因为这次是压缩包解压,而没有贴心的安装程序,所以我们只能手动去设置一下环境变量了,环境变量的设置也是老套路了,右键”计算机“ 进入属性
按步骤找到环境变量设置选项,点进去
把Maven的bin路径设定到环境变量 Path
然后以mvn --version
来查看,能正确输出版本号,就代表我们成功安装了Maven
三、Maven 的配置文件
Maven安装好后自带了一个配置文件 setting.xml
,用于配置Maven的全局选项、仓库等信息。而且,Maven的配置分为全局配置
与用户配置
,全局配置就是Maven安装路径下的conf/setting.xml
,用户配置是指在用户主目录下的.m2
文件夹内。所以需要注意,用户配置会覆盖全局配置,因此在进行用户配置时,要特别注意不要覆盖全局配置的设置
—
我们来分析下,这份配置文件的结构
1. 本地仓库
定义本地仓库的位置,Maven会将下载的依赖项文件保存在该位置。
<settings>
<localRepository>C:\Users\username\.m2\repository</localRepository>
</settings>
2. 远程仓库
定义用于查找依赖项的远程仓库,远程仓库可以是中央仓库
、私有仓库
、镜像仓库
,这里我们做一点简单的解释
- 中央仓库
中央仓库是由 Maven 社区提供的仓库,我们可以说是官方仓库。包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息。中央仓库不需要进行额外的配置 - 私有仓库
是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件,一般由公司内部搭建。 - 镜像仓库
镜像仓库是指在Maven中心仓库之外,由第三方机构或个人自行搭建的仓库,一般情况是完全复制了中心仓库中的内容,并提供了更快的下载速度和更好的稳定性。
<settings>
<mirrors>
<!-- 指定镜像仓库 -->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
<!-- servers标签是在 Maven 中用来配置身份验证信息供 Maven 访问远程仓库时使用的 -->
<servers>
<server>
<id>my-repo</id>
<username>your-username</username>
<password>your-password</password>
</server>
</servers>
<!-- profiles 标签用于定义针对不同环境,不同的环境可以使用不同的依赖库、资源文件等 -->
<profiles>
<profile>
<id>my-private-repo</id>
<repositories>
<!-- 私有仓库设置 -->
<repository>
<id>my-repo</id>
<url>http://my-repo-url</url>.
<!-- 配置Maven是否应从该存储库中查找releases版本 -->
<releases><enabled>true</enabled></releases>
<!-- 配置Maven是否应从该存储库中查找快照版本 -->
<snapshots><enabled>false</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>my-repo</id>
<url>http://my-repo-url</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!-- 当有多个profile时,可以使用此标签来指定使用哪个profile -->
<activeProfile>my-private-repo</activeProfile>
</activeProfiles>
</settings>
这里有几点需要说明下:
- 私有仓库建议配置在
<profile>
内,这样可以将其作为一个特定环境的配置,并且在使用时可以更加方便地调用。如果您需要在全局使用私有仓库,也可以将其配置在<mirrors>
标签内。 - 如果同时配置中央仓库、镜像仓库和私有仓库,它们使用的优先级从高到底依次为私有仓库 - 镜像仓库 - 中央仓库,也就是说私有仓库是最优先的选择
<mirrorOf>
标签用于指定要镜像的仓库ID,设置为 *,表示所有仓库都使用镜像,设置为central
代表只有中央仓库使用该镜像。
3. 代理服务器
定义用于访问远程仓库的代理服务器,包括HTTP代理和HTTPS代理等。
<settings>
<proxies>
<proxy>
<id>proxy1</id>
<active>true</active>
<protocol>http</protocol>
<host>proxy.example.com</host>
<port>8080</port>
<username>user</username>
<password>password</password>
<nonProxyHosts>*.example.com</nonProxyHosts>
</proxy>
</proxies>
</settings>
4. 服务器认证
定义访问需要认证的远程仓库
的用户名和密码。
<settings>
<servers>
<server>
<id>server1</id>
<username>username</username>
<password>password</password>
</server>
</servers>
</settings>
5. 其他选项
除了上面的内容,还可以配置其他选项,如超时时间、调试级别等。
<settings>
<configuration>
<timeout>30000</timeout>
<logLevel>debug</logLevel>
</configuration>
</settings>
默认情况下,Maven的logLevel是INFO级别。通过指定logLevel,可以控制Maven在执行构建时输出日志的详细程度,从而方便调试和排查错误
6. 配置示例
对于大部分同学来说,所用到的包基本都在中央仓库中,因此只需要针对中央仓库设置一个镜像即可,一般常用的就是阿里云镜像,那么整体的文件配置就如下:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
</servers>
<!--自定义指定jar包存放的位置-->
<localRepository>E:\mavenRepo\repository</localRepository>
<!--配置具体的仓库的下载镜像-->
<mirrors>
<mirror>
<!--此镜像的唯一标识符,用来区分不同的mirror元素-->
<id>alimaven</id>
<!--对哪种仓库进行镜像,简单说就是替代哪个仓库-->
<mirrorOf>central</mirrorOf>
<!--镜像名称-->
<name>aliyun maven</name>
<!--镜像URL-->
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
<profiles>
</profiles>
</settings>
四、对接IDEA
当我们设置完Maven的相关配置,如果是使用Idea的同学,还需要在Idea中进行相关配置。我们设定完以后,就可以在IDEA中进行Maven的相关操作。
注意,此处我们勾选了 Override ,这将使得此处的Maven设置拥有最高优先级,一般保持这个和外层配置一致即可。