maven 3.9.10¶
为什么要使用Maven¶
想象一下:你正指挥一场交响乐,但乐手们各自为政——小提琴手用五线谱,鼓手靠节拍器,钢琴师凭记忆。这就是没有Maven的Java开发:依赖冲突、构建混乱、协作灾难!Maven是那根魔法指挥棒,将碎片化的构建流程化为精准乐章。它用**约定优于配置**终结“环境地狱”,用**依赖管理**驯服“JAR包黑洞”,更用**标准化生命周期**让构建、测试、部署一键完成。拒绝手动下载依赖的史前操作,告别“在我机器上能跑”的甩锅现场——Maven,是开发者的秩序之神。
Maven是什么¶
Maven是Apache基金会开源的**项目构建与管理工具**。核心是一套基于POM(Project Object Model)的约定化框架:
1. 依赖管理:自动下载、缓存、传递第三方库(如Spring、JUnit)。
2. 构建生命周期:预定义compile
、test
、package
等阶段,一条命令完成全流程。
3. 项目模板:通过mvn archetype
快速生成标准项目结构。
本质是**用XML描述项目**,让构建过程可重复、可协作、可自动化。
入门示例¶
真实场景:你需开发一个电商应用,整合Spring Boot和MySQL驱动。
步骤:
1. 生成项目骨架:
mvn archetype:generate -DgroupId=com.example -DartifactId=ecommerce -DarchetypeArtifactId=maven-archetype-quickstart
- 在
pom.xml
添加依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
- 运行构建:
mvn package # 编译、测试、打包为JAR
结果:Maven自动下载所有依赖,构建出可执行的ecommerce-1.0-SNAPSHOT.jar
,无需手动管理任何JAR文件!
Maven 3.9.10更新概览¶
本次更新聚焦**稳定性强化**与**未来兼容**:
1. 修复多模块并发构建依赖解析冲突(MNG-8096),避免随机构建失败。
2. 增强Windows/MinGW兼容性,解决ARM64架构原生库异常(MNG-8169, MNG-8170)。
3. 严控CI友好版本误用,无值设定时主动报错(MNG-8211)。
4. 升级关键依赖(Guava、Jansi、ASM等),适配JDK 24+并消除安全警告(MNG-8399)。
5. 优化本地仓库性能,修复.mvn
目录路径引发的脚本故障(MNG-8315)。
更新日志¶
Release Notes - Maven - Version 3.9.10¶
Bug修复¶
- 修复多模块并发构建中依赖解析行为不一致导致的失败问题
- 增强MinGW支持,需添加
--add-opens java.base/java.lang=ALL-UNNAMED
参数 - 修复Windows/arm64平台下Jansi原生库异常
- 当使用CI友好版本但未设置值时,Maven将主动使构建失败
- 解决调用
java.lang.System
受限方法时的警告 - 修复过滤场景下非直接模块链接丢失的ProjectDependencyGraph缺陷
- 修复当
.mvn
目录位于驱动器根目录时mvn.cmd
执行失败的问题 - 优化恢复速度,解决Maven恢复耗时过长问题
- 修复LifecycleDependencyResolver中的“重复构件”错误
改进¶
- 引入
maven.repo.local.head
配置项 - 针对JDK 24+优化
sun.misc.Unsafe
使用警告 - 新增移除编译和测试源根目录的方法
- 优化依赖版本说明:明确其为要求而非实际生效版本
- 从默认绑定中移除
maven-plugin-plugin:addPluginArtifactMetadata
- 统一使用独立版ASM库
- 在生成的描述符中将
xsi:schemaLocation
切换为HTTPS协议 - 简化“获取项目版本”等脚本操作
任务¶
- 升级Eclipse Sisu至0.9.0.M4,并在CI中使用Java 24
依赖升级¶
- 升级Plexus Annotations至2.2.0
- 升级Guava至33.4.8-jre
- 升级Plexus Utils至3.6.0
- 升级Commons IO至2.19.0
- 升级Buildnumber插件至3.2.1
- 升级Jansi至2.4.2
- 升级Resolver至1.9.23
- 升级XMLUnit至2.10.2
(详细依赖列表见发布说明链接)
更新总结¶
Maven 3.9.10是一次稳健进化:它扼杀多模块构建的并发幽灵,加固Windows生态兼容性,并严堵CI版本滥用漏洞。通过升级Guava、ASM等核心依赖,为JDK 24+铺平道路;更以性能优化和脚本简化,让开发者专注创造而非环境纠错。每一次构建,都是向“零配置噩梦”的胜利宣言。