Maven

分钟
Maven
AI 概括

点击按钮,AI 将为你生成这篇文章的摘要

Maven的作用

依赖管理

方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题

当使用maven进行项目依赖(jar包)管理,则很方便的可以解决这个问题。 我们只需要在maven项目的pom.xml文件中,添加一段如下图所示的配置即可实现

项目构建

我们开发了一套系统,代码需要进行编译、测试、打包、发布,这些操作如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成

相关配置

Maven仓库:用于存储资源,管理各种jar包.

下载maven后进行解压,解压后的目录结构:

  • bin目录 : 存放的是可执行命令。(mvn 命令重点关注)
  • conf目录 :存放Maven的配置文件。(settings.xml配置文件后期需要修改)
  • lib目录 :存放Maven依赖的jar包。(Maven也是使用java开发的,所以它也依赖其他的jar包)

进入到conf目录下修改settings.xml配置文件

1). 使用超级记事本软件,打开settings.xml文件,定位到53行

2). 复制标签,粘贴到注释的外面(55行)

3). 复制之前新建的用来存储jar包的路径,替换掉标签体内容

4)定位到160行左右,配置阿里云私服

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
注: 只可配置一个(另一个要注释!) ,不然两个可能发生冲突,导致jar包无法下载
在系统变量处新建一个变量MAVEN_HOME
PATH环境变量的值,新建一个,设置为:%MAVEN_HOME%\bin
在cmd中执行mvn-v查看。Maven3.6.1要JDK8才行,之前用JDK6就会报错
设置IDEA使用本地安装的Maven,并修改配置文件及本地仓库路径

1. 配置本地仓库

conf/settings.xml 中配置 <localRepository> 标签,指定本地仓库路径,用于存储下载的 jar 包。

<localRepository>E:/maven/repository</localRepository>

2. 配置阿里云私服

中央仓库在国外,下载速度较慢。在 conf/settings.xml<mirrors> 标签中添加:

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

3. 配置环境变量

  • 新建系统变量 MAVEN_HOME,值为 Maven 解压安装目录
  • Path 中添加 %MAVEN_HOME%\bin
  • 验证安装:命令行执行 mvn -v,输出版本信息表示安装成功

4. 配置关联 JDK 版本(可选)

conf/settings.xml<profiles> 中添加:

<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 项目中添加的依赖未正确下载,右侧 Maven 面板中依赖报红,reload 重新加载也不会再下载。

产生原因:由于网络原因,依赖下载不完整,Maven 仓库中生成了 xxx.lastUpdated 文件,该文件不删除则不会重新下载。

解决方案

  1. 根据 Maven 依赖坐标,找到仓库中对应的 xxx.lastUpdated 文件并删除,然后重新加载项目。
  2. 通过命令 del /s *.lastUpdated 批量递归删除指定目录下的所有 xxx.lastUpdated 文件。
  3. 依赖下载完成后,若 Maven 面板仍然报红,可关闭 IDEA 后重新打开加载项目。

注意事项

  • 安装路径中避免包含中文和空格。
  • 配置 settings.xml 时注意标签的嵌套层级,<mirror> 必须在 <mirrors> 内部。
  • 首次下载依赖时耗时较长,需耐心等待。

项目配置与坐标

全局设置一些信息

选择 IDEA中 File => close project

打开 All settings , 选择 Build,Execution,Deployment => Build Tools => Maven

创建Maven项目

填写模块名称,坐标信息,点击finish,创建完成

POM (Project Object Model) :指的是项目对象模型,用来描述当前的maven项目。

  • 使用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">
<!-- POM模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 当前项目坐标 -->
<groupId>com.itheima</groupId>
<artifactId>maven_project1</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 打包方式 -->
<packaging>jar</packaging>
</project>

image.webp

  • src/main/java:源代码文件
  • src/main/resources:源代码配置文件
  • src/test/java:测试代码文件
  • src/test/resources:测试代码配置文件
  • target:编译、打包生成文件存放目录

Maven仓库

仓库本质是一个目录(文件夹),用于存储开发中所有依赖(jar 包)和插件。

Maven 仓库分为三类:

仓库类型说明
本地仓库自己计算机上的目录,用来存储 jar 包
中央仓库由 Maven 团队维护的全球唯一仓库,地址:https://repo1.maven.org/maven2/
远程仓库(私服)一般由公司团队搭建的私有仓库

jar 包查找顺序

当项目中使用坐标引入依赖 jar 包后:

  1. 先查找本地仓库中是否有对应的 jar 包
    • 有 → 项目直接引用
    • 没有 → 去中央仓库下载到本地仓库
  2. 如果搭建了远程仓库(私服),查找顺序变为:本地仓库 → 远程仓库 → 中央仓库

生命周期

阶段说明
clean移除上一次构建生成的文件
compile编译项目源代码
test使用单元测试框架运行测试(JUnit)
package将编译后的文件打包(jar、war 等)
install安装项目到本地仓库

执行顺序:同一套生命周期中,阶段是有顺序的,后面的阶段依赖于前面的阶段。执行后面的生命周期时,前面的生命周期都会执行。

跨生命周期packagecompile 属于同一套生命周期,执行 packagecompile 会自动运行;但 cleanpackage 不属于同一套,执行 packageclean 不会运行。

插件机制

Maven 的生命周期是抽象的,生命周期本身不做任何实际工作。实际任务(如源代码编译)都交由插件来完成。

生命周期顺序:cleanvalidatecompiletestpackageverifyinstallsitedeploy

日常开发重点关注:cleancompiletestpackageinstall

mvn compile # 编译
mvn test # 测试
mvn package # 打包
mvn install # 安装到本地仓库
  • 同一套生命周期中,执行后面的阶段会自动执行前面所有阶段。
  • 不同套的生命周期互不影响(如 cleandefault 互不触发)。
  • 生命周期本身是抽象定义,具体工作由插件实现。

分模块设计与开发

1). 什么是分模块设计:将项目按照功能拆分成若干个子模块

2). 为什么要分模块设计:方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享

3). 注意事项:分模块设计需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分

比如说,将pojo包下的实体类,抽取到一个maven模块中 tlias-pojo

1.创建maven模块 tlias-pojo,存放实体类

2.然后在tlias-pojo中创建一个包 com.itheima.pojo (和原来案例项目中的pojo包名一致)

3.将原来案例项目 tlias-web-management 中的pojo包下的实体类,复制到tlias-pojo模块中

4.在 tlias-pojo 模块的pom.xml文件中引入依赖

5.删除原有案例项目tlias-web-management的pojo包【直接删除不要犹豫,我们已经将该模块拆分出去了】,然后在pom.xml中引入 tlias-pojo的依赖

<dependency>
<groupId>com.itheima</groupId>
<artifactId>tlias-pojo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

支持与分享

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

赞助
Maven
https://f3f3.top/posts/p25885/
作者
lyf
发布于
2026-06-14
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
lyf
Hello, I'm LyF.
公告
欢迎来到一飞的博客!。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
我和宝宝在一起已经
---------TSH ❤️ CXY---------
---------TSH
❤️
CXY---------
0 0 0 0 0 00
分类
标签
站点统计
文章
18
分类
8
标签
19
总字数
74,739
运行时长
0
最后活动
0 天前

文章目录

🤖 AI 助手

👋 你好!

我可以帮你解答关于这篇文章的问题