【Java】Maven

发布于:2025-07-03 ⋅ 阅读:(29) ⋅ 点赞:(0)

一.Maven简介

Maven的产生主要是为了解决Java项目中的两个问题:
1.依赖管理
传统 Java 项目在引入第三方库时,需要手动下载 JAR 包并维护复杂的依赖关系。Maven 提供了统一的依赖管理机制,通过简单的配置即可自动从仓库下载并引入所需的依赖,同时还能解决版本冲突问题。
2.项目构建
Java 项目的构建过程通常包括编译源代码(.java)为字节码(.class)、打包成 JAR 文件等多个步骤。Maven 提供了标准的构建生命周期和插件系统,使得整个构建过程自动化、规范化,极大地提高了开发效率。

Maven仓库的概念:

Maven的仓库分为本地仓库、私服仓库、中央仓库
本地仓库就是PC上保留的jar文件
私服仓库一般是公司内部的,可以上传自主开发的jar文件到私服仓库,便于日后开发
中央仓库是Maven官方维护的。

二.Maven的核心配置

在maven的conf文件夹下面,有一个settings.xml文件
在这里插入图片描述
{user.home}表示当前用户的家目录,我的用户是admin,所以进入admin就可以查看到
在这里插入图片描述
我们在下面再添加一行,就可以切换保存的目录了

另外一个需要配置的地方就是镜像,由于中央仓库是在国外的,所以有时候访问会慢很多,我们可以配置国内镜像

<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>aliyunmaven</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

接下来是配置Maven的jdk版本

<profile>
  <id>jdk-17</id>
  <activation>
  <activeByDefault>true</activeByDefault>
  <jdk>17</jdk>
  </activation>
  <properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
  </properties>
</profile>

指定使用 Maven 构建出来的项目默认使用的 JDK 版本为 17。

三.在IDEA中配置Maven

选择新建一个Maven项目
archetype里选择快速开始构建
在这里插入图片描述
创建完后,下面这个就是maven项目的一个基本结构
在这里插入图片描述
然后我们还需要去配置一下Maven,因为IDEA里面的Maven一般是它自带的,我们需要把我们自己的Maven给导入进来在这里插入图片描述
这里选择刚才修改的Maven配置文件
在这里插入图片描述
然后点OK即可

四.Maven的生命周期和插件

在这里插入图片描述
validate是用来验证pom.xml写的是否正确,执行一下,显示成功了在这里插入图片描述
但是如果我注释掉一行呢在这里插入图片描述
在这里插入图片描述
就会出现报错,说我们缺少了groupid

compile进行编译,生成字节码文件
test会把项目中的test用例都给执行一遍
package把项目打包成jar或者war文件(还会先执行compile和test)
verify检查生成的jar包是否正确,是否符合标准
install把生成的jar包导入到本地仓库,导入maven
deploy把生成的jar包导入私服仓库

五.Maven的坐标

1. <groupID> 一般是公司或组织的唯一标识
2. <artifactID> 一般是项目的唯一标识
3.<version> 版本号

六.依赖管理

6.1 依赖范围

除了上面说到的3个依赖标签,还有一个<scope>标签
它用来知道依赖的范围
一般来说有compile,是编译和运行时需要的,默认是这个,可以省略不写
provided 编译时需要,运行时不需要
runtime 运行时需要,编译时不需要
test 只是在测试的时候需要,不会被打包到jar文件中
system从本地仓库查找,需要加上systemPath带上路径

<scope>system</scope>
	<systemPath>${basedir}/lib/junit-3.8.2.jar</systemPath>

6.2 依赖冲突

比如我们在项目中添加了两个不同的依赖,他们又依赖了不同版本的同一个jar包的话,就会出现依赖冲突,到底应该使用哪一个jar包
有两个原则:
1.路径最短在这里插入图片描述
2.pom.xml优先使用最先声明的

七.父子工程

使用情境:
在实际开发中,会把一个大项目拆分成多个小项目,比方说用户管理,商品管理等等,但是如果每一个模块都需要重新配置一遍依赖就会很麻烦。
但是我们观察发现,像spring,mybatis几乎每个模块都会用到。我们就可以通过父子工程来管理这些依赖

我们先新建一个maven-parent在这里插入图片描述
把这里改成pom,表示最后不是生成jar文件,而是用来管理在这里插入图片描述
然后把这个项目的SRC文件也给删掉,在这里用不到
随后右键maven-parent选择新建一个模块在这里插入图片描述
在这里插入图片描述
可以看到这里child-a的pom.xml多了一个parent标签
而父工程的pom.xml多了modules模块在这里插入图片描述