必须完成Maven安装配置并理解pom.xml结构与生命周期阶段:①下载解压Maven、配置MAVEN_HOME和Path、用mvn -v验证;②修改settings.xml设本地仓库路径、添加阿里云镜像;③用archetype生成项目,分析pom.xml中GAV坐标、dependencies、build等结构;④执行validate/compile/test/package/install观察target变化;⑤用properties统一管理依赖版本。

要在Java项目中实现依赖自动下载、构建流程标准化、多模块统一管理,必须完成Maven的正确安装配置,并理解pom.xml文件结构与生命周期阶段的触发逻辑——这直接决定后续mvn命令能否正常执行、依赖是否能精准解析、打包产物是否符合预期。
安装Maven并验证环境变量
第一步:从Maven官网下载apache-maven-3.9.4-bin.zip(截至2026年8月,最新稳定版),解压到路径如D:\develop\apache-maven-3.9.4,确保路径不含中文和空格。
第二步:新建系统环境变量MAVEN_HOME,值设为解压目录全路径;再编辑Path变量,追加%MAVEN_HOME%\bin。
第三步:打开新终端窗口,执行mvn -v。若输出包含Apache Maven 3.9.4、Java版本及Maven home路径,则安装成功;【若报“mvn不是内部或外部命令”,说明Path未生效或终端未重启】。
配置本地仓库与阿里云镜像
方法一:修改conf/settings.xml启用自定义本地仓库
用文本编辑器打开${MAVEN_HOME}/conf/settings.xml,找到第53行附近被注释的<localRepository>标签,将其复制到<settings>根元素内(例如第55行),取消注释,并将路径改为你的目标目录,如<localRepository>D:\maven-repo</localRepository>。
方法二:配置阿里云公共镜像加速依赖下载
在<mirrors>标签内添加以下内容(注意必须位于<mirrors></mirrors>之间):
<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror>
这一步不做会导致首次执行mvn compile时卡在下载maven-plugin-api等基础插件上,耗时可能超过10分钟。
创建标准Maven项目并观察pom.xml结构
在空白目录下执行命令:
mvn archetype:generate -DgroupId=com.example -DartifactId=demo-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
等待生成完成后进入demo-app目录,用编辑器打开pom.xml,你会看到如下关键结构:
① 根元素<project>声明了xmlns命名空间;
② <groupId>、<artifactId>、<version>构成GAV坐标,这是Maven识别项目的唯一依据;
③ <dependencies>块中默认含一个JUnit依赖,其<scope>test</scope>表示该依赖仅参与测试编译与运行,不会打入最终jar包;
④ <build>下隐式启用maven-compiler-plugin,但未显式声明——这是Maven“约定优于配置”的体现,源码默认在src/main/java,编译输出到target/classes。
执行default生命周期各阶段并观察输出行为
在项目根目录下依次执行以下命令,每执行一条都观察target/目录变化:
第一步:mvn validate —— 仅校验pom.xml语法和必要字段,不生成任何文件;
第二步:mvn compile —— 触发validate→compile,生成target/classes/目录,内含编译后的.class文件;
第三步:mvn test —— 触发validate→compile→test,除编译主代码外,还编译src/test/java并运行测试,生成target/surefire-reports/;
第四步:mvn package —— 触发完整前置链,最终在target/下生成demo-app-1.0-SNAPSHOT.jar;
第五步:mvn install —— 在package基础上,将jar安装进本地仓库(即你配置的D:\maven-repo),路径为com/example/demo-app/1.0-SNAPSHOT/;
【跳过test阶段必须加-DskipTests,仅用-Dmaven.test.skip=true会跳过编译测试代码,但可能引发后续阶段类找不到错误】。
用properties统一管理依赖版本号
打开pom.xml,在<project>根元素下添加<properties>块(位置任意,但习惯放在<groupId>之后):
<properties><spring.version>6.1.0.RELEASE</spring.version><junit.version>5.10.2</junit.version></properties>
然后在<dependencies>中引用:
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency>
这种写法避免了同一框架多个模块重复写相同版本号,后续升级只需改一处<spring.version>值即可全局生效。


















