Maven的基本使用

1978 字
10 分钟
Maven的基本使用

一、什么是maven#

Maven的主要作用是简化了Java项目的构建过程。它通过一个名为pom.xml的核心配置文件来管理项目的依赖关系、编译设置、打包和部署等操作。使用Maven,开发者不需要手动下载和管理依赖的jar包,只需在pom.xml文件中声明所需的依赖项及其版本,Maven会自动从仓库中下载并添加到项目中。

此外,Maven还提供了许多插件,支持项目的开发、测试、打包和部署等一系列活动。这些插件可以扩展Maven的功能,使其能够满足不同项目的需求。

总的来说,Maven是一个强大的自动化构建工具,它通过标准化的项目结构和生命周期管理,提高了开发效率,降低了项目维护的复杂性。

Maven
Maven

中央仓库的地址:https://mvnrepository.com/

二、maven的基本操作#

1、idea配置maven#

设置maven
设置maven

需要注意的是,如果公司有使用私仓的话,settings.xml配置文件一定要使用包含私仓信息的,可以直接问同事要一份!

2、引入新的依赖#

2.1、依赖在远程仓库中#

maven仓库存在的依赖,直接引入,刷新maven即可

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>

groupld:用于定义当前Maven项目所隶属的组织名称,一般按照域名反写规则来确定,比如“com.zcloud”。 artifactld:用来定义当前Maven项目的名称,通常为具体的模块名称,比如“user-service”“admin-service”等。 version:用于设定当前项目的版本号。

2.2、依赖不在远程仓库中#
  • 使用 system 作用域

    将需要引入的jar包放到pom文件同级目录lib下,如果没有这个目录可以新建一个目录,然后使用如下方式引入,坐标信息自定义即可,但最后和jar包实际信息保持一致或者能够正确反映该jar包信息!

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>alicrypto-java-aliyun</artifactId>
<version>1.0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/alicrypto-java-aliyun-1.0.4.jar</systemPath>
</dependency>

如果想要在打包的时候也要把本地system的jar包打进来的话,就需要在maven插件中配置一个includeSystemScope属性:

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--设置为true,打包的时候把本地的system的jar包也打包进来-->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>

注:project.basedir 就是pom文件所在的目录。

scop标签的的值有下面几个:

compile默认值,适用于所有阶段(测试、运行,编译)
provided期望容器或使用者会提供这个依赖。如servlet-api.jar;适用于(测试,编译)
runtime只在运行时使用,如 mysql的驱动jar
test只在测试时使用,如 junit.jar
systemMaven不会在仓库中查找对应依赖,在本地磁盘目录中查找;适用于(编译,测试,运行)
  • 安装到本地仓库

安装本地仓库直接使用如下命令安装即可!

Terminal window
mvn install:install-file -Dfile=alicrypto-java-aliyun-1.0.4.jar -DgroupId=com.alibaba -DartifactId=alicrypto-java-aliyun -Dversion=1.0.4 -Dpackaging=jar -DlocalRepositoryPath=D:\Learning_Document\Maven\repository

说明,-Dfile就是你需要安装的jar的路径,可以是绝对路径,也可以是当前命令执行目录下的相对路径。-DlocalRepositoryPath就是需要jar包需要安装到的maven本地仓库的路径!

如下图,就是在对应需要安装的jar包目录下打开cmd的执行成功的结果:

命令安装本地jar包
命令安装本地jar包

如下,在本地仓库对应目录存在我们安装的jar包,即是成功!

命令安装本地jar包-2
命令安装本地jar包-2

3、maven打包等功能说明#

maven工具栏
maven工具栏

4、maven的多环境管理#

Maven 多环境管理能够实现多环境配置文件之间的灵活切换,以及对配置文件中不同环境变量值的精准替换。在一些公司的实际项目中会运用到这一功能,了解并知晓其存在即可,当所在公司采用这种方式时,能及时想到即可。当使用maven多环境管理功能的时候,在maven工具栏会出现Profiles项,如下图所示:

maven多环境管理
maven多环境管理

pom文件里面会有如下配置:

<project>
<profiles>
<profile>
<id>dev</id>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
#设置该配置为默认生效
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<env>dev</env>
<server.port>8081</server.port>
<log.level>INFO</log.level>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
<server.port>9090</server.port>
<log.level>WARN</log.level>
</properties>
</profile>
</profiles>
</project>

application.yml配置文件里面会有如下配置:

# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
port: ${server.port}
# 日志配置
logging:
level:
com.ruoyi: ${log.level}
org.springframework: ${log.level}

5、maven的私服#

5.1 maven私服的介绍#

maven 私有仓库的搭建,通常都是使用 Nexus 这一主流工具。通过使用maven 私仓,我们为您能够构建专属于公司内部使用的依赖仓库。一方面,我们可以在这个私仓中高效管理公司自己开发的各类 Jar 包,实现内部组件的统一存储与版本管控;另一方面,还能将项目所需的中央仓库 Jar 包缓存到私仓中,既可以提升依赖下载的稳定性与速度,也能解决内网开发环境下的项目构建的需求。

maven私仓
maven私仓

上面有四个maven仓库类型,含义如下:

仓库类型比喻功能
maven-central (代理仓库)海外代购仓库代理Maven中央仓库,首次购买从国外运来,之后存在本地仓库,下次直接拿
maven-releases (宿主仓库)公司正式产品仓库存放公司正式发布的版本(打包时不带-SNAPSHOT)
maven-snapshots (宿主仓库)公司测试产品仓库存放公司正在开发的版本(打包时带-SNAPSHOT)
maven-public (组仓库)总服务台把上面三个仓库整合成一个统一入口,你只需要记住这个地址
5.2 maven私服的使用#

maven私服对于我们来说主要就是有以下两个常见的使用

  • 发布jar包

    直接点击maven工具栏的deploy发布即可!

  • 引入jar包

maven私仓2
maven私仓2

三、常见问题#

1、依赖冲突#

当两条依赖路径把同一个坐标的 jar 引了进来,但版本不同,JVM 只能选一个,于是“选错”的那个就把代码搞炸,这也就是依赖冲突。

1.1 如何查看依赖冲突#
  • 命令的形式

    不建议用,依赖多的时候,不好查找

    mvn -Dverbose dependency:tree
  • 使用插件 (建议使用该方式)

依赖冲突1
依赖冲突1

如果搜索插件的时候,没有任何结果的时候,可进行如下设置后,再进行搜索

依赖冲突2
依赖冲突2

安装完成之后,pom文件下方就会出现 Dependency Analyzer ,点击即可对当前pom文件引入的依赖进行分析。

maven-helper
maven-helper

1.2 解决依赖冲突#

1)使用maven的依赖传递原则来解决

  • 路径最短优先原则

​ 主要根据依赖的路径长短来决定引入哪个依赖

  • 最先声明优先原则

    如果两个依赖的路径一样,声明在前的则优先选择。

2)手动排除依赖

使用exclusion标签来排除依赖

<dependency>
<groupId>nl.basjes.parse.useragent</groupId>
<artifactId>yauaa</artifactId>
<exclusions>
<exclusion>
<artifactId>commons-collections4</artifactId>
<groupId>org.apache.commons</groupId>
</exclusion>
</exclusions>
</dependency>

可以自己手动在pom文件添加,也可以使用Maven Helper插件来快速排除依赖!

排除依赖
排除依赖

3)封装成rpc服务(了解)

当同一个Java程序 里必须同时加载两份不兼容的 jar包的时候,这个时候只能把其中一方单独拆成一个RPC服务,主应用通过 Feign/Dubbo/gRPC等进行远程调用!

2、maven的pom文件未被正确识别#

pom文件为蓝色的m标识的时候,为正确识别。

pom文件识别
pom文件识别

未被识别的时候,右击pom文件点击 Add as Maven Project 添加为maven工程:

pom文件识别2
pom文件识别2

3、maven工具栏消失#

  • 未启用maven插件

maven工具栏消失
maven工具栏消失

  • pom文件未被正确识别

    maven工具栏消失2
    maven工具栏消失2

4、依赖未正确加载#

依赖未正确加载
依赖未正确加载

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Maven的基本使用
https://study-docs-158.pages.dev/posts/maven的基本使用/
作者
我的学习小铺
发布于
2026-08-01
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
我的学习小铺
学而时习之
分类
标签
最新动态
站点统计
文章
44
分类
8
标签
9
总字数
126,514
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.15.3
文章许可
CC BY-NC-SA 4.0