Maven的安装与配置

article/2025/9/20 22:31:15

1、在Windows上安装Maven

1.1 检查JDK安装

在安装Maven之前,首先要确认已经正确安装了JDK。Maven可以运行在JDK1.4及以上的版本上。打开Windows的命令行,运行如下的命令来检查Java安装情况:

C:\Users\panjunbiao>echo %Java_Home%
C:\Users\panjunbiao>java -version

执行结果:

上述命令首先检查环境变量Java_Home是否指向了正确的JDK目录,接着运行Java命令。如果Windows无法执行Java命令,或者无法找到Java_Home环境变量,就需要检查Java是否安装了,或者环境变量是否设置正确。

1.2 下载Maven

Maven的下载页面:Maven – Download Apache Maven

如下图,点击并下载Maven的压缩文件。

下载完成后,将安装文件解压到指定的目录中。解压后的目录结构如下:

1.3 设置环境变量

接着需要设置环境变量,将Maven安装配置到操作系统环境中。打开系统属性面板(在桌面上右键“我的电脑” → “属性”),单击高级系统设置。

1.3.1 设置Maven_Home环境变量

(1)新建系统变量

变量名:Maven_Home

变量值:D:\apache-maven-3.6.3

(2)修改Path变量值

在Path变量值后面加上:;%Maven_Home%\bin;

1.3.2 设置MAVEN_OPTS环境变量

变量名:MAVEN_OPTS

变量值:-Xms128m -Xmx512m

设置MAVEN_OPTS环境变量不是必须的,但建议设置。因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,则很容易得到java.lang.OutOfMemeoryError。因此,一开始就配置该变量是推荐的做法。

1.4 检查Maven安装

配置完成环境变量后,新增打开一个新的cmd窗口(这里强调新的窗口是因为新的环境变量配置需要新的cmd窗口才能生效),运行如下命令检查Maven的安装情况:

C:\Users\panjunbiao>echo %Maven_Home%
C:\Users\panjunbiao>mvn -v

执行结果:

第一条命令echo %Maven_Home%用来检查环境变量Maven_Home是否指向了正确的Maven安装目录;而mvn -v是Maven的执行命令,以检查Windows系统是否能够找到正确的mvn执行脚本。

2、Maven的配置

2.1 生成.m2文件夹

在cmd窗口中执行如下命令:

mvn help:system

先运行一条简单的命令:mvn help:system。该命令会打印出所有的Java系统属性和环境变量,这些信息对我们日常的变成工作很有帮助。该命令的目的是让Maven执行一个正在的任务。我们可以从命令行输出看到Maven会下载\maven-help-plugin,包括pom文件和jar文件。这些文件都被下载到了Maven本地仓库中。

现在.m2文件夹就生成了,在用户目录下可以找到.m2文件夹,如:C:\Users\panjunbiao\.m2

默认情况下,该文件夹下放置了Maven本地仓库(C:\Users\panjunbiao\.m2\repository),所有的Maven构件都被存储到该仓库中,可以方便重用。可以到C:\Users\panjunbiao\.m2\repository\org\apache\maven\plugins\maven-help-plugin目录下找到刚刚下载的maven-help-plugin的pom文件和jar文件。

2.2 配置用户范围的settings.xml文件

默认情况下,.m2文件夹下除了repository仓库之外就没有其他目录和文件了,不过大多数Maven用户需要复制安装目录下的D:\apache-maven-3.6.3\conf\settings.xml文件到.m2文件夹下C:\Users\panjunbiao\.m2\settings.xml。这是一条最佳实践。

Maven用户可以选择配置安装目录下的\conf\settings.xml文件或者.m2文件夹下的settings.xml文件。前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响(推荐)。

2.3 配置Maven本地仓库

打开.m2文件夹下的settings.xml文件,添加如下配置:

<!-- 设置本地仓库位置 -->
<localRepository>D:\maven-local-repository</localRepository>

这样Maven本地仓库就不用在C盘下了。

2.4 配置中央仓库的镜像(改用:阿里云中央仓库镜像)

有时我们通过Maven去下载相关的依赖包时,会发现下载的速度非常慢,而有时又下载不了,没有响应。为什么会这么慢呢,原因是Maven默认连接的远程仓库是国外的(http://repo1.maven.org/maven2/)。为了提升下载速度,只要把Maven默认的镜像改换成国内的就行了,如阿里云的中央仓库镜像。

在settings.xml文件下的<mirrors>节点中,添加如下配置:

<!-- 配置中央仓库的镜像(改用:阿里云中央仓库镜像)-->
<mirror>        <id>alimaven</id><name>aliyun-maven</name><mirrorOf>central</mirrorOf><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

3、IntelliJ IDEA中使用Maven

3.1 设置IDEA属性

设置IDEA属性,在Build,Execution,Deployment → Build Tools → Maven,如下图:

3.2 使用Maven创建项目

 最终的项目结构如下:

3.3 编写POM.xml配置文件

使用仓库搜索服务可以根据关键字得到Maven坐标,如:mvnrepository

这里以引入JUnit5的jar包为例,配置信息如下:

<dependencies><!-- JUnit5单元测试框架 --><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-launcher</artifactId><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><scope>test</scope></dependency><dependency><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId><scope>test</scope></dependency>
</dependencies>

完整的POM.xml配置文件,如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.pjb.mvnbook</groupId><artifactId>hello-maven</artifactId><version>1.0-SNAPSHOT</version><dependencies><!-- JUnit5 --><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-launcher</artifactId><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><scope>test</scope></dependency><dependency><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId><scope>test</scope></dependency></dependencies>
</project>

3.4 编写代码

(1)创建HelloMaven.java类。

public class HelloMaven
{public String sayHello(){return "Hello Maven";}public static void main(String[] args){System.out.println(new HelloMaven().sayHello());}
}

(2)创建HelloMavenTest.java测试类。

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;/*** 使用JUnit5进行测试类* @author pan_junbiao**/
class HelloMavenTest
{@BeforeEachvoid setUp(){}@AfterEachvoid tearDown(){}@Testvoid sayHello(){HelloMaven helloMaven = new HelloMaven();String result = helloMaven.sayHello();System.out.println(result);assertEquals("Hello Maven",result);}
}


http://chatgpt.dhexx.cn/article/oXxKcr6t.shtml

相关文章

maven的下载与安装教程(超详细)

前言 本篇文章是基于win10系统下载安装Maven的教程。 一、 Maven介绍 1. 什么是Maven Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目&#xff0c;其主要服务于基于Java平台的项目创建&#xff0c;依赖管理和项目信息管理。maven是Apache的顶级…

maven安装教程(超详细图解)

&#x1f4d6;本篇超级详细案例图解教学 Maven安装教程&#xff0c;图片点击可放大仔细看 Maven安装教程 1、前提 Maven需要Java环境,所以首先需要安装JDK,本教程默认已安装JDK1.8 2.解压文件 将maven文件夹复制到磁盘目录&#xff0c;本教程以安装到D:\maven目录为例 3.…

史上最详细的Maven安装教程

熟练的配置开发环境是每一个程序员必备的功课&#xff0c;俗话说&#xff1a;工欲善其事&#xff0c;必先利其器。 本文须知&#xff1a;安装maven环境之前要先安装java jdk环境&#xff08;没有安装java环境的可以先去看安装JAVA环境的教程&#xff09;Maven 3.3 require JDK …

elasticsearch(es)查询api,结果集排序/分页/范围查询;es查询某个字段不为null且不为空;分组聚合distinct

查询某个字段不等于空字符串,must_not反向查找&#xff0c;不等于匹配值的结果集 查询某个字段的值不等于空字符串 GET aunt/aunt_type/_search {"query": {"bool": {"must_not": [{"term": {"auntUserId": {"value&…

ElasticSearch系列(四)--springboot使用ElasticsearchRestTemplate整合ElasticSearch,实现文本高亮检索

前言 ElasticsearchRestTemplate是spring-data-elasticsearch项目中的一个类&#xff0c;和其他spring项目中的template类似。 网上的学习资料大都是基于ElasticsearchTemplate,但是ElasticsearchTemplate在未来的版本会被废除 预备知识 - 建立索引 因为是基于springboot,那就…

springBoot集成es(三)spring-data集成es与常用查询操作

接着上一篇博客&#xff0c;看下spring-data集成es的常用查询操作&#xff08;这里只写serviceImpl部分代码&#xff09;&#xff1a;ElasticsearchRepository使用QueryBuilder构造查询条件 &#xff1a;Iterable<T> search(QueryBuilder var1); 官网介绍&#xff1a;ht…

es的must_not的踩坑

文章目录 前言一、需求背景二、坑2.1 坑一2.2 坑二 总结 前言 记录下在公司做需求时must_not踩的坑 一、需求背景 要去做人才库的一个排除项&#xff1a;排除x个月面试不通过。实际上的dsl语句则对应的是must_not。且内部要包含两个元素&#xff1a;x个月、面试不通过&#x…

elasticsearch 父子文档使用must not 正确姿势

需求描述&#xff1a; 1、基于elasticsearch 父子文档进行子条件查询父文档 2、需要查询出子文档不存在的父文档 已知文档结构&#xff1a; 1、父文档clue_list 关联很多的子文档&#xff0c;我们用roam子文档做测试&#xff01; 2、roam子文档的结构 {"took" :…

Elasticsearch 的Java API使用匹配空或者是null字段

全文检索数据权限控制&#xff0c;需要根据业务权限配置&#xff1b; 本组成员包括查看自己【有些模块本来就没有分组】&#xff0c;此时需要查询groupId为null&#xff0c;但是creator为自己的数据&#xff01; 参考案例 .must(QueryBuilders.existsQuery("message&qu…

ES-3-高级查询

文章目录 1 深分页Scroll1.1 分页的查询过程1.2 Scroll查询的实现 2 delete-by-query3 ES的复合查询3.1 bool查询3.2 boosting查询 4 filter查询5 高亮查询6 聚合查询6.1 去重计数查询cardinality6.2 范围统计range6.3 统计聚合查询extended_stats 1 深分页Scroll 1.1 分页的查…

Elasticsearch嵌套查询must和mustNot

场景&#xff1a;在bug关联固件的时候将bug的数据放到固件的数据下&#xff0c;可以根据固件数据下是否包含bug数据查询出已关联和未关联的数据。 ES文档结构 目录 1.must查询此bug关联的固件 java代码 2.mustNot查询此bug未关联的固件 java代码 3.劫后余生 4.闲来…

MQ消息

AMQP协议介绍 AMQP&#xff0c;即Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff0c;是应用层协议的一个开放标准&#xff0c;为面向消息的中间件设计。 AMQP的主要特征是面向消息、队列、路由&#xff08;包括点对点和发布/订阅&#xff09;、可靠性…

MQ基础信息mq的简介

MQ 同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&#xff0c;但是你却不能…

MFQ

一什么是MFQ&PPDCS&#xff1f;MFQ&PPDCS是由外部教练邰晓梅提出的一套测试分析和测试设计方法。MFQ将被测对象分层&#xff0c;针对不同层次进行测试分析和设计进行&#xff0c;使测试设计人员不会那么容易忘记一些测试的相关点&#xff08;功能交互、质量属性&#x…

MQ的了解

MQ的了解&#xff1a; 如果进行产品选型 Kafka 优点&#xff1a;吞吐量非常大&#xff0c;性能非常好&#xff0c;集群高可用。 缺点&#xff1a;会丢数据&#xff0c;功能比较单一 使用场景&#xff1a;日志分析、大数据采集 RebbitMQ 优点&#xff1a;消息可靠性高&…

多级反馈队列调度算法(MFQ)

多级反馈队列调度算法是目前公认的较好的一种进程调度算法,它能较好的满足各类进程的需要。 MFQ算法首先设置多个就绪队列。队列的优先级递减,且各队列时间片大小也不同。例如我实现的算法里,设置了3个队列,第一队列优先级>第二队列>第三队列,且后一个队列的时间片大…

从MFQ方法到需求分析

前几天看了一篇性能测试相关的文章&#xff1a;性能测试模型初探及应用方法分析&#xff0c;其中提到了MFQ分析方法。专门去查阅了MFQ相关的一些资料&#xff0c;学习了一番。 之后想起了以前看《Google的软件测试之道》这本书时&#xff0c;书中提到的一种测试分析方法&#x…

nRF24l01无线传输

模块简介&#xff1a; 它是一款工作于2.4GHZ~2.5GHZISM频段&#xff0c;带功放通信距离可达上千米&#xff0c;近距离传输速度可达2Mbps&#xff0c;具有6通道且每通道都有自己的缓冲区&#xff0c;可以同时跟不同的NFR进行通信的无线收发模块。 工作模式&#xff1a;接收模式…

C51- NRF24L01 无线串口模块

1.硬件知识 1.1 nRF24L01的引脚功能 &#xff08;IO方向是相对模块而言的&#xff09; CE&#xff1a;Chip Enable&#xff0c;芯片使能&#xff0c;在发送和接收过程中都要将这个引脚拉高。 IRQ: 低电平触发&#xff0c;当状态寄存器中 TX_DS、RX_DR 或 MAX_RT 为高时触发中断…

NRF24L01+模块实现双向通信(带ACK payload)

本文主要关于NRF24L01 2.4GHz无线模块的应用。 目录 说明模块开发的大致步骤使用方式一、单向通信二、双向通信&#xff08;有应答包(ACK payload))寄存器配置 三、星状组网 注意事项 说明 1、NRF24L01和NRF24L01的区别&#xff0c;前者支持Enhanced ShockBurst™,后者不支持…