重磅!Maven 4 官宣:历时15年,Java构建工具迎来彻底重构
自 2010 年 Maven 3 发布 以来,Maven 对 Java 构建生态的整体支持方式,几乎没有发生过颠覆性的变化。
然而在这 15 年里,Java 世界早已天翻地覆:
相比之下,Maven 本身却显得有些“老态”。
Maven 4 的出现,正是为了解决这些长期积累的历史包袱。
虽然 Maven 4 仍未公布正式 GA 发布日期,但目前已经迭代到 第五个发布候选版本(RC5),从项目成熟度和变更稳定性来看,距离正式发布已相当接近。
“
现在正是提前了解、评估和准备升级的合适时机。
POM 模型升级:从 4.0.0 到 4.1.0Maven 4 将 POM 的模型版本升级为 4.1.0:
ini
也就是说:
“
不升级 POM 也能用 Maven 4,但升级后才能真正“吃到红利”。
Build POM / Consumer POM 分离:终于解决“POM 污染”这是 Maven 4 最重要、也是最颠覆性 的变化之一。
在 Maven 3 中,发布到仓库的 POM 同时包含:
依赖使用者会被迫解析大量 “与我无关” 的信息。
Maven 4 的解决方法是 POM 扁平化(Flattening)。
Maven 4 正式区分:
类型
用途
Build POM
项目自身构建
Consumer POM
提供给依赖方
Consumer POM 具备以下特征:
开启方式:
ini
mvn clean install -Dmaven.consumer.pom.flatten=true
“
Maven 3 时代需要额外的 Flatten Maven Plugin,Maven 4 中已成为 原生能力。
这一步,直接让依赖解析更快、更干净、更可预测。
新 Artifact Type:显式控制 classpath / module path在 Maven 3 中:
这种“隐式规则”在 Java 模块化时代并不够清晰。
Maven 4 新增类型:
lua
开发者终于可以 显式声明依赖放在哪里。
Maven 4 还新增了专门的注解处理器类型:
以 Lombok 为例:
xml
Maven 4 明确区分了 API classpath 与 processor classpath,构建语义更清晰,也更利于工具链优化。
Modules 改名为 Subprojects:为 Java 9 “让路”Java 9 引入模块系统后:
长期让新手和工具“集体懵逼”。
Maven 4 的选择是:
xml
同时还支持:
自动识别
这是一次 语义层面 + 工程实践层面 的双重升级。
树形生命周期:并行构建终于“名正言顺”Maven 3 的生命周期是 线性的,即使多模块,也很难高效并行。
Maven 4 引入 Tree-based Lifecycle:
开启方式:
css
mvn -b concurrent verify
配置能力显著增强的“小变化”1. 条件表达式 Profile scss
不再只是 os.name、jdk 这种基础判断,而是 真正的表达式系统。
2. 统一的 Sources 模型Maven 3:
xml
Maven 4:
xml
更适合:
Maven 4 还提供了官方升级工具:
bash
mvnup check # 只生成报告 mvnup apply # 自动修改
它会分析:
并给出 可执行的升级建议。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
