当前位置: 首页 > news >正文

Maven最新版本安装及配置

Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。 

本章我们详细介绍如何使用Maven。 


一、Maven是什么?

如果每一个项目都自己搞一套配置,肯定会一团糟。我们需要的是一个标准化的Java项目管理和构建工具。

Maven就是是专门为Java项目打造的管理和构建工具,它的主要功能有:

  • 提供了一套标准化的项目结构;
  • 提供了一套标准化的构建流程(编译,测试,打包,发布……);
  • 提供了一套依赖管理机制。

Maven项目结构

一个使用Maven管理的普通的Java项目,它的目录结构默认如下:

a-maven-project
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   └── resources
│   └── test
│       ├── java
│       └── resources
└── target

项目的根目录a-maven-project是项目名,它有一个项目描述文件pom.xml,存放Java源码的目录是src/main/java,存放资源文件的目录是src/main/resources,存放测试源码的目录是src/test/java,存放测试资源的目录是src/test/resources,最后,所有编译、打包生成的文件都放在target目录里。

这些就是一个Maven项目的标准目录结构。

所有的目录结构都是约定好的标准结构,我们千万不要随意修改目录结构。使用标准结构不需要做任何配置,Maven就可以正常使用。

我们再来看最关键的一个项目描述文件pom.xml,它的内容长得像下面:

<project ...><modelVersion>4.0.0</modelVersion><groupId>com.itranswarp.learnjava</groupId><artifactId>hello</artifactId><version>1.0</version><packaging>jar</packaging><properties>...</properties><dependencies><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency></dependencies>
</project>

其中,groupId类似于Java的包名,通常是公司或组织名称,artifactId类似于Java的类名,通常是项目名称,再加上version,一个Maven工程就是由groupIdartifactIdversion作为唯一标识。我们在引用其他第三方库的时候,也是通过这3个变量确定。例如,依赖commons-logging

<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version>
</dependency>

使用<dependency>声明一个依赖后,Maven就会自动下载这个依赖包并把它放到classpath中。

二、Maven和JDK版本支持情况

JDK版本Maven版本支持情况
JDK 1.8Maven 3.3及以上
JDK 9Maven 3.5.0及以上
JDK 10Maven 3.5.3及以上
JDK 11Maven 3.5.4及以上
JDK 12Maven 3.6.0及以上
JDK 13Maven 3.6.1及以上
JDK 14Maven 3.6.2及以上
JDK 15Maven 3.6.3及以上
JDK 16Maven 3.8.1及以上
JDK 17Maven 3.8.3及以上

之前我们使用的maven版本是3.6.3。详细可以参考下面文章进行了解学习:

修改IDEA自带的Bundled (Maven 3)的仓库路径(Maven安装及配置)_idea插件仓库地址-CSDN博客

!!! 为了后续学习JDK17方便,这次我们安装较新版本的Maven作为学习~

三、安装Maven

Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。

如果你还未安装 JDK,可以参考我们的Java基础-环境篇:JDK安装与环境变量配置jdk8/11/17(保姆式详解)_Siobhan. 明鑫的博客-CSDN博客

若JDK配置完毕,接着按照如下步骤进行~~~

1、检查 Java 安装

操作系统任务命令
Windows打开命令控制台
c:\> java -version
Linux打开命令终端
# java -version
Mac打开终端
$ java -version

 ​​​​​​

2、Maven 下载

Maven 下载地址:Maven – Download Apache Maven

不同平台下载对应的包:

系统包名
Windowsapache-maven-3.9.5-bin.zip
Linuxapache-maven-3.9.5-bin.tar.gz
Macapache-maven-3.9.5-bin.tar.gz

maven历史版本:Index of /maven/maven-3 

这里我们直接安装3.9.5的Windows系统版本!

 

3、解压到对应目录

 Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下,这里我解压到D:\Software\Java\Maven 下面。

系统存储位置 (可根据自己情况配置)
WindowsD:\Software\Java\Maven\apache-maven-3.3.9
Linux/usr/local/apache-maven-3.3.9
Mac/usr/local/apache-maven-3.3.9

解压后目录结构如下: 

  • bin:存放了 maven 的命令
  • boot:存放了一些 maven 本身的引导程序,如类加载器等
  • conf:存放了 maven 的一些配置文件,如 setting.xml 文件
  • lib:存放了 maven 本身运行所需的一些 jar 包

四、设置 Maven 环境变量

1、点击高级系统设置,再点击环境变量

2、添加环境变量 MAVEN_HOME: 

 3、编辑变量Path,添加变量值%MAVEN_HOME%\bin

%MAVEN_HOME%\bin


 参考:Maven 环境配置 | 菜鸟教程

系统配置
Windows

右键 "计算机",选择 "属性",之后点击 "高级系统设置",点击"环境变量",来设置环境变量,有以下系统变量需要配置:

新建系统变量 MAVEN_HOME,变量值:E:\Maven\apache-maven-3.3.9

编辑系统变量 Path,添加变量值:;%MAVEN_HOME%\bin

注意:注意多个值之间需要有分号隔开,然后点击确定。

Linux

下载解压:

# wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
# tar -xvf  apache-maven-3.3.9-bin.tar.gz
# sudo mv -f apache-maven-3.3.9 /usr/local/

编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:

export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export PATH=${PATH}:${MAVEN_HOME}/bin

保存文件,并运行如下命令使环境变量生效:

# source /etc/profile

在控制台输入如下命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功:

# mvn -v
Mac

下载解压:

$ curl -O http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
$ tar -xvf  apache-maven-3.3.9-bin.tar.gz
$ sudo mv -f apache-maven-3.3.9 /usr/local/

编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:

export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export PATH=${PATH}:${MAVEN_HOME}/bin

保存文件,并运行如下命令使环境变量生效:

$ source /etc/profile

在控制台输入如下命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功:

$ mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/apache-maven-3.3.9
Java version: 1.8.0_31, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: ISO8859-1
OS name: "mac os x", version: "10.13.4", arch: "x86_64", family: "mac"

五、测试Maven是否安装成功

win+R 运行cmd 输入 mvn -version或者mvn -v,如图所示则配置成功

六、配置maven仓库

  • Maven中的仓库是用来存放maven构建的项目和各种依赖的(Jar包)。

1. Maven的仓库分类

  • 本地仓库: 位于自己计算机中的仓库, 用来存储从远程仓库或中央仓库下载的插件和 jar 包,
  • 远程仓库: 需要联网才可以使用的仓库,阿里提供了一个免费的maven 远程仓库。
  • 中央仓库: 在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中 央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件

2、配置本地仓库

1 初始化本地仓库

打开Windows终端输入:

mvn    // 初始化maven

Maven初始化后,会在C盘User文件夹-本地账号文件夹中自动创建.m2文件夹,包含一个空的名为Repository的文件夹。 

 

使用IDEA时,如果不指定自己下载的Maven,idea会默认使用自带的Maven 3(bundle)。

maven 3默认的仓库路径一般是在c盘的用户文件夹中的.m2目录下:

当maven下的pom文件中的依赖逐渐增加时,maven仓库下面的jar包也会渐渐增多。

在这里,我们不推荐将本地仓库存放在C盘,所以我们需要将Repository文件夹删除,保留.m2即可。为了后续方便要给仓库换位置到D盘。

2 新建文件夹作Maven的本地仓库

在C盘之外的一个盘符中创建一个文件夹用来当作Maven的本地仓库

创建在D盘,即在D:\Software\Java\Maven文件下新创建一个文件夹为: Maven-Repository

3 进入Maven安装目录  配置本地仓库

在config文件夹中找到一个settings.xml 配置文件,用Notepad++打开,进行本地仓库的配置 

 在localRepository的注释标签下面添加

  <localRepository>D:\Software\Java\Maven\Maven-Repository</localRepository>

编辑完 ctrl + s 保存一下,先不用急着关闭该文件。 

3、配置中央仓库 

Maven作为项目构建及管理工具是如何管理jar包的。

首先每当我们开发一个项目的时候,需要导入一些项目需要的依赖,也就是相关的jar包,只有导入这些依赖,项目才能正常,高效地运行起来。

当我们需要某一个jar包的时候,我们需要在项目的pom.xml文件中去配置所需要的依赖以进行导入到项目中,则此时,Maven会先去本地仓库中查找是否存在相应的jar包,如果有,配置就能直接用,如果Maven在本地仓库中没有找到,则Maven会去中央仓库中下载相应的jar包存放到本地仓库在进行导入到项目中。

配置中央仓库只需要将下面的一段代码直接复制粘贴到settings.xml文件的<mirrors></mirrors>中即可。

<!-- 阿里云仓库 -->
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>        
</mirror>

以上为刚下载maven的相关配置。

如果已使用一段时间,需要更改Maven仓库位置,参考文章:

修改IDEA自带的Bundled (Maven 3)的仓库路径(Maven安装及配置)_idea插件仓库地址-CSDN博客


七、IDEA中配置Maven

1 打开IDEA 创建一个新的project

2 打开IDEA 选择File --> Settings --> 搜素maven,查看默认配置

3 修改默认配置配置

4 配置Maven的Runner参数

参数一: -DarchetypeCatalog=internal 解决使用骨架构建Maven项目时候会卡住的问题

参数二: -Dfile.encoding=GB2312 解决Maven工程中控制台输出中文乱码的问题

 

注意事项:

上述配置如果是在settings中进行配置则只会对当前Project生效,后续创建的新的Project不会生效

如果是在New Projects Setup里面的setting for new projects中配置,则会对后续创建的所有新的Project都生效,但是无法对当前项目生效

八、创建Maven工程

在IDEA中配置好maven后, 接下来我们使用maven去快速的去构建一个 JavaWeb项目

1 project创建好以后, 选择创建module

2 创建一个 maven 工程


点击 Next填写项目信息

进行一下修改

创建好的工程,长这个样子

Maven目录说明:

src/main/java          —— 存放项目的.java 文件 
src/main/resources      —— 存放项目资源文件,如数据库的配置文件 
src/test/java         —— 存放所有单元测试.java 文件,如 JUnit 测试类 
target                 —— 项目输出位置,编译后的class 文件会输出到此目录 
pom.xml              ——maven 项目核心配置文件 
1
2
3
4
5
3. Maven工程改造
当前创建的maven项目是一个 普通的Java项目,不是web项目,我们要进行一下改造

在main目录下创建一个webapp文件夹
————————————————
版权声明:本文为CSDN博主「格子衫111」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012660464/article/details/114093066

 

 

相关文章:

Maven最新版本安装及配置

Maven是一个Java项目管理和构建工具&#xff0c;它可以定义项目结构、项目依赖&#xff0c;并使用统一的方式进行自动化构建&#xff0c;是Java项目不可缺少的工具。 本章我们详细介绍如何使用Maven。 一、Maven是什么&#xff1f; 如果每一个项目都自己搞一套配置&#xf…...

探索ClickHouse——使用MaterializedPostgreSQL同步PostgreSQL数据库

安装PostgreSQL sudo apt install postgresql修改配置 sudo vim /etc/postgresql/14/main/postgresql.conf 解开并修改wal_level 的配置项 wal_level logical 重启服务 /etc/init.d/postgresql restartRestarting postgresql (via systemctl): postgresql.service AUTHENTI…...

《向量数据库指南》——向量数据库 有必要走向专业化吗?

向量数据库 有必要走向专业化吗? 向量数据库系统的诞生,来源于具体业务需求——想要高效处理海量的向量数据,就需要更细分、更专业的数据基础设施,为向量构建专门的数据库处理系统。 但这种路径是必须的吗? 从产品层面讲,如果传统数据库厂商不单独研发向量数据库,那么…...

你必须知道的数据查询途径!!

在当今信息爆炸的时代&#xff0c;我们每天都会面临海量的数据和信息。如何在这些繁杂的信息中快速、准确地找到自己需要的内容&#xff0c;也是当代一个非常重要的技能。下面&#xff0c;我将介绍几种你必须知道的企业数据信息查找途径。 ​ 1. 搜索引擎 搜索引擎是我们日常中…...

火焰原子吸收光谱法、容量法和电感耦合等离子体发射光谱法

声明 本文是学习GB-T 1871.5-2022 磷矿石和磷精矿中氧化镁含量的测定 火焰原子吸收光谱法、容量法和电感耦合等离子体发射光谱法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件描述了在磷矿石和磷精矿中测定氧化镁含量的火焰原子吸收…...

亚马逊云科技 2023 柏林峰会主题演讲总结

欢迎来到我们的亚马逊云科技2023柏林峰会主题演讲全面总结&#xff01;在这篇文章中&#xff0c;我们将深入探讨在活动期间分享的主要公告、亮点和故事。通过这里的视频格式&#xff0c;展示了亚马逊云科技技术如何转化为商业和行业。 每年&#xff0c;亚马逊云科技峰会都会汇…...

CentOS Stream9 安装远程桌面服务 Xrdp

1. 安装 XRDP 若服务器本身没有桌面则首先需要安装本地桌面&#xff1a; yum -y groups install "GNOME Desktop" startx配置源&#xff1a; dnf install epel-release安装 xrdp dnf install xrdp 2. 配置 Xrdp Xrdp 配置文件位于 /etc/xrdp 目录中。对于常规 X…...

实施运维01

一.运维实施工程师所具备的知识 1.运维工程师&#xff0c;实施工程师是啥&#xff1f; 运维工程师负责服务的稳定性&#xff0c;确保服务无间断的为客户提供服务. 实施工程师负责工程的实施工作&#xff0c;负责现场培训&#xff0c;一般都要出差&#xff0c;哪里有项目就去…...

MySQL大表直接复制文件的copy方式

看腻了就来听听视频演示吧&#xff1a;https://www.bilibili.com/video/BV1Bp4y1F7kd/ MyISAM引擎可单独将 *.MYD和 *.MYI 拷贝到远程服务器上InnoDB引擎受限于版本&#xff08;MySQL5.5&#xff09;无法直接拷贝.ibd文件&#xff0c;因为在ibdata1文件保存有表的字典信息&…...

Redis-集群

Redis-集群 主从复制和哨兵只能在主节点进行写数据&#xff0c;从节点读取数据&#xff0c;因此本质上&#xff0c;是进行了读写的分离&#xff0c;每个节点都保存了所有的数据&#xff0c;并不能实现一个很好的分布式效果。 1.哈希求余算法 假设有N台主机&#xff0c;对每台…...

使用CrawlSpider爬取全站数据。

CrawpSpider和Spider的区别 CrawlSpider使用基于规则的方式来定义如何跟踪链接和提取数据。它支持定义规则来自动跟踪链接&#xff0c;并可以根据链接的特征来确定如何爬取和提取数据。CrawlSpider可以对多个页面进行同样的操作&#xff0c;所以可以爬取全站的数据。CrawlSpid…...

【JUC】Java并发编程从挖坑到入土全解(4-一文讲通LockSupport与线程中断->长图预警)

目录 LockSupport与线程中断 线程中断机制 什么是中断机制&#xff1f; 与中断相关的3个API 如何停止中断运行中的线程&#xff1f; 当前线程的中断标识为true&#xff0c;是不是线程就会立刻停止&#xff1f; 如何理解静态方法Thread.interrupted() LockSupport是什么…...

Springboot学习笔记——3

Springboot学习笔记——3 一、热部署1.1、手动启动热部署1.2、自动启动热部署1.3、热部署范围配置1.4、关闭热部署 二、配置高级2.1、第三方bean属性绑定2.2、松散绑定2.3、常用计量单位应用2.4、bean属性校验2.5、进制数据转换规则 三、测试3.1、加载测试专用属性3.2、加载测试…...

jupyter 切换虚拟环境

当前只有两个环kernel 我已经创建了很多虚拟环境&#xff0c;如何在notebook中使用这些虚拟环境呢&#xff1f;请看下面 比如说我要添加nlp 这个虚拟环境到notebook中 1. 切换到nlp环境 2. 安装如下模块 pip install ipykernel 3. 执行如下命令 python -m ipykernel install …...

如何在Apache和Resin环境中实现HTTP到HTTPS的自动跳转:一次全面的探讨与实践

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

安全防御—密码学

1. 什么是APT&#xff1f; APT&#xff08;Advanced Persistent Threat&#xff09;是指高级持续性威胁&#xff0c;本质是针对性攻击。 利用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式&#xff0c;APT攻击的原理相对于其他攻击形式更为高级和先进&#xff0c;…...

灯具从深圳寄国际物流到墨西哥

在国际贸易的日益频繁的今天&#xff0c;越来越多的企业开始将产品销往海外市场。然而&#xff0c;如何将这些产品安全、快速地送达目的地&#xff0c;成为了每个企业都需要面对的问题。对于灯具这种重量大、体积大的物品来说&#xff0c;如何选择合适的国际物流方式&#xff0…...

spark3使用hive zstd压缩格式总结

ZSTD&#xff08;全称为Zstandard&#xff09;是一种开源的无损数据压缩算法&#xff0c;其压缩性能和压缩比均优于当前Hadoop支持的其他压缩格式&#xff0c;本特性使得Hive支持ZSTD压缩格式的表。Hive支持基于ZSTD压缩的存储格式有常见的ORC&#xff0c;RCFile&#xff0c;Te…...

直线导轨精度等级在设备中有什么影响?

直线导轨的精度选择是直线导轨应用中的重要环节&#xff0c;需要根据具体的应用场景和设备要求来选择合适的精度等级&#xff08;常见分3个等级&#xff1a;N/H/P&#xff09;。下面我们来详细了解一下直线导轨的精度选择。 1、精度等级的概念&#xff1a;直线导轨的精度等级是…...

windows平台FairMOT的实现

环境&#xff1a;python3.6pytorch1.1.0torchvision0.3.0cuda9.2vs2015 该项目需要装3个c库&#xff08;dcn_v2&#xff0c;apex&#xff0c;cython_bbox&#xff09;特别坑&#xff0c;各种环境不匹配&#xff0c;各种bug。本人c小白&#xff0c;但是一路摸索总算成功了。下面…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...