发行说明 – Maven 3.5.0
Apache Maven 团队宣布发布 Maven 3.5.0。
Maven 3.5.0可供下载。
Maven 是一个软件项目管理和理解工具。基于项目对象模型 (POM) 的概念,Maven 可以从一个中心位置管理项目的构建、报告和文档。
核心版本独立于可用的插件。插件的进一步版本将单独制作。有关更多信息,请参阅插件列表。
我们希望您喜欢使用 Maven!如果您有任何问题,请咨询:
- 网站:http ://maven.apache.org/
- maven 用户邮件列表:http ://maven.apache.org/mailing-lists.html
- 参考文档:http ://maven.apache.org/ref/3.5.0/
为什么不是 Maven 3.4.0?
Maven 3.3.9 发布后,Eclipse Aether 项目退役,代码库迁移到 Apache Maven 项目。
3.4.0 版本的最初目标是在迁移到 Apache Maven 项目后用完全相同的代码替换 Aether,然后继续对解析器代码以及 Maven 的其他区域进行错误修复。
两个基础之间的代码迁移花费的时间比预期的要长,因此提交给 Maven 核心的其他更改超出了 3.4.0 的意图范围。
为了重新关注 3.4.0 的原始意图,决定将 Maven 核心历史恢复到 3.3.9 版本的点,并一次合并一个所需的更改。
因为已经有很多关于 Maven 3.4.0 中交付的不同特性和修复的错误的沟通,并且新的历史可能不会在第一个版本中包含它们,所以决定永远烧毁 3.4.x 版本线。
可以在邮件列表存档中阅读有关此决定的更多详细信息。
本新闻稿的记者和贡献者
错误:
- MNG-5963记者:拉里·辛格
- MNG-5962记者/撰稿人:Miriam Lee
- MNG-5961记者:Mike Drob
- MNG-5958记者:Meytal Genah,撰稿人:Anton Tanasenko
- MNG-5852记者:杰弗里·亚历山大
- MNG-5823记者:Tobias Oberlies
- MNG-5815记者:Peter Kjær Guldbæk
- MNG-5368记者:安德鲁·海恩斯
- MNG-6090记者:Harald Wellmann
- MNG-6173记者/撰稿人:Christoph Böhme
改进:
- MNG-6030记者:Andriy 撰稿人:Andriy
- MNG-5934记者/撰稿人:Alex Henrie
- MNG-5883记者:Ben Caradoc-Davies
- MNG-3507贡献者:Jason Dillon、Sébastian Le Merdy
非常感谢所有记者和投稿人的时间和支持。
测试人员
以下 Maven 社区成员在发布过程中提供了宝贵的反馈:
- 格热戈日格日别克
- 彼得·希罗基
- 马克·德里克特,
- 德扬·斯托亚迪诺维奇
- 托马斯·科利尼翁
- 弗雷德·库克
- 拉斐尔·阿克曼
- 艾略特·梅茨格
- 查斯·洪顿
- 丹尼斯·基塞尔霍斯特
感谢您的时间和反馈。
有关更改的概述
-
新的特殊属性在每个计算的 URL(项目、SCM、站点)中添加了对与 artifactId MNG-5878
project.directory
不匹配的模块目录名称的支持 -
JAVA_HOME
发现已简化为简单地检查是否已设置然后JAVA_HOME
尝试通过which java
MNG -6003进行发现。 -
通过 Apache Ant 的构建引导支持已被删除。您现在只能使用以前版本的 Maven 引导 Maven 构建,但不能再使用 Ant MNG-5904。
-
基于
M2_HOME
与安装的不同 Maven 版本相关的使用问题并为简化操作,M2_HOME
已删除并不再支持MNG-5823、MNG-5836、MNG-5607 的使用。 -
Windows 用户的重要更改: 的用法
%HOME%
已替换为%USERPROFILE%
MNG-6001 -
已报告并修复了与
mvn
Unix/Linux/Cygwin/Solaris 或 Windows MNG-5815、MNG-5852、MNG-5963、MNG-6022的脚本相关的几个问题。 -
在 Maven 3.3.9 中,我们删除了 maven-ejb3-plugin 的绑定,因为它不存在。我们跟进并删除了MNG-6014
ejb3
和MNG-6017par
生命周期的工件处理程序。 -
在以前的 Maven 版本中,在非常大的反应器(200-300 个模块或更多)的情况下,存在与内存使用相关的更大问题,这会导致内存不足异常或需要增加内存设置的故障。此问题已通过MNG-6030修复。
-
如果您在
.mvn/maven.config
文件中定义了属性,则无法通过命令行覆盖该属性。这已通过MNG-6078修复。 -
如果您使用
<prerequisites>..</prerequisites>
的是非 maven-plugin 项目,您将收到如下所示的警告:[INFO] Scanning for projects... [WARNING] The project org.apache.maven:maven:pom:3.5.0 uses prerequisites which is only intended for maven-plugin projects but not for non maven-plugin projects. For such purposes you should use the maven-enforcer-plugin. See https://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html
这将告诉您使用maven-enforcer-plugin来检查您希望构建项目的 Maven 版本,而不是使用
prerequisites
MNG-5297、MNG-6092。 -
将 Eclipse Aether 替换为Maven Resolver MNG-6110、MNG-6140。
-
通过 和/或 使用 CI 友好版本
${revision}
已${sha1}
修复${changelist}
MNG -6057、MNG-6090和MNG-5895。知道你是否在你的 pom 中使用之前命名的属性是非常重要的,你必须使用flatten-maven-plugin如果你想做一个mvn install
或mvn deploy
更多的细节可以在Maven CI 友好版本中找到。
改进
可以在我们的问题管理系统中找到完整的更改列表以及相同的详细说明。
错误
- MNG-5297 - 站点应告知“prerequisites.maven 已弃用”
- MNG-5368 - 当依赖项管理定义中的版本范围不正确时引发 UnsupportedOperationException
- MNG-5629 - DefaultUpdateCheckManager.read 中的 ClosedChannelException
- MNG-5815 - 使用“&&”时“mvn.cmd”未正确指示失败
- MNG-5823 - mvnDebug 不适
M2_HOME
用于空格 - 缺少引号 - MNG-5829 - mvn shell 脚本在 Solaris 10 上失败并出现语法错误
- MNG-5836 - 日志配置被覆盖
$M2_HOME/lib/ext/*.jar
- MNG-5852 - mvn shell 脚本调用
/bin/sh
但需要 Bash 函数 - MNG-5895 - 已通过 pom 文件中的属性定义的“${..}” 的 CI 友好使用问题。
- MNG-5958 -
java.lang.String
无法转换为org.apache.maven.lifecycle.mapping.LifecyclePhase
- MNG-5961 - Maven 可能不知道 log4j2
- MNG-5962 -
mvn.cmd
当前目录之间有空格时失败 - MNG-5963 -
mvn.cmd
不返回 ERROR_CODE - MNG-6022 -
mvn.cmd
如果目录包含 & 符号 (&
)则失败 - MNG-6053 - 不安全的系统属性复制
MavenRepositorySystemUtils
,导致 NPE - MNG-6057 - `${..} 反应器顺序的 CI 友好使用问题已更改
- MNG-6090 - CI 友好属性中断子模块构建
- MNG-6105 -
properties.internal.SystemProperties.addSystemProperties()
不是真正的线程安全 - MNG-6109 -
PluginDescriptor
自参数值以来未读取 - MNG-6117 -
${session.parallel}
未正确设置 - MNG-6144 -
DefaultWagonManagerTest#testGetMissingJarForced()
传递的值不正确 - MNG-6166 -
mvn dependency:go-offline
由于缺少传递依赖而失败jdom:jdom:jar:1.1
- MNG-6168 - 修复未关闭的流
- MNG-6170 - NPE 在使用多线程的情况下
-T X versions:set -DnewVersion=1.0-SNAPSHOT
- MNG-6171 - 回归:关于使用非线程安全标记插件的警告不再显示
- MNG-6172 - 命令行系统属性选项的优先级已更改
- MNG-6173 -
MavenSession.getAllProjects()
应该返回反应堆中的所有项目 - MNG-6176 - Javadoc 错误阻止了 Java 8 的发布
- MNG-6177 -
--file
Windows 和 Unix 启动器的命令行选项不适用于像“Spaces & Special Char
”这样的目录名称 - MNG-6180 - 目标失败时 groupId 具有纯色
- MNG-6181 - HttpClient 在调试日志级别产生大量噪音
- MNG-6183 - 依赖管理调试消息更正。
- MNG-6190 - maven-resolver-provider 的
DefaultArtifactDescriptorReader
构造函数和 initService 方法不匹配 - MNG-6191 -
mvn -f
抱怨readlink
macOS 下的非法选项 - MNG-6192 - 分发 zip 文件包含无序条目
- MNG-6195
mvn
- 在启动器脚本中使用一致的引用形式 - MNG-6198 -使用指定位置时
mvn
脚本无法找到.mvn
目录pom.xml
-f
依赖升级
改进
- MNG-5579 - 统一来自 shell 和批处理脚本的错误输出/检查逻辑
- MNG-5607 - 不再
M2_HOME
在mvn
shell/命令脚本中使用 - MNG-5883 - 使不必要的旧本地存储库警告静音
- MNG-5889 -
.mvn
使用时应选择目录--file
- MNG-5904 - 删除整个 Ant 构建
- MNG-5931 - 修复文档
- MNG-5934 - PMD 识别的字符串处理问题
- MNG-5946 - 修复链接等,
README.txt
其中是交付的一部分 - MNG-5968 - 默认插件版本更新
- MNG-5975
SimpleDateFormat
-在中使用 Java 7CLIReportingUtils#formatTimestamp
- MNG-5977 - 提高我们
MavenTransferListener
实现的输出可读性 - MNG-5993 - 在丢失/空的情况下混淆错误消息
artifactId
和version
pluginManagement
- MNG-6001 - 替换
%HOME%
为%USERPROFILE%
inmvn.cmd
- MNG-6003 - 大幅减少
JAVA_HOME
发现代码 - MNG-6014
ejb3
- 为生命周期移除 ArtifactHandler - MNG-6017
par
- 为生命周期移除 ArtifactHandler - MNG-6030 -
ReactorModelCache
在 maven 版本 3.0.5 之后没有有效使用,这会导致大量内存占用 - MNG-6032 - 构建期间基于程序集描述符中的绝对路径发出警告。
- MNG-6068 - 在 pom XSD 和参考文档中记录默认范围编译
- MNG-6078 - 无法覆盖已在
.mvn/maven.config
- MNG-6081 - 日志重构 - 方法调用被变量替换
- MNG-6102
${maven.conf}
-介绍m2.conf
- MNG-6115 - 将 Jansi 本机库搜索路径添加到我们的启动脚本中,以避免在每次运行时提取到临时文件
- MNG-6145 - 删除不存在的 m2 包含在
component.xml
- MNG-6146 - 对代码和文档的几个小的风格和拼写改进
- MNG-6147 - `MetadataResolutionResult#getGraph()` 包含重复的 if 子句
- MNG-6150 - 3.5.0 的 Javadoc 改进
- MNG-6163
CLASSWORLDS_JAR
-在 shell 启动脚本中引入 - MNG-6165 - 弃用并替换拼写错误的公共 API
- MNG-6179 - 删除未使用的先决条件
- MNG-6185 - 用 AbstractMojo javadoc 中的注释替换 doclettag 解释
- MNG-6189 - 如果 maven-site-plugin 配置包含
reportPlugins
元素,则发出警告
新特性
任务
- MNG-5954 - 删除过时的
maven-embedder/src/main/resources/META-INF/MANIFEST.MF
- MNG-6106 - 删除
maven.home
默认值设置器m2.conf
- MNG-6136 - 将 Maven Wagon 从 2.10 升级到 2.12
- MNG-6137 - 清理由不完整的 Wagon HTTP 提供程序排除引起的重复依赖项
- MNG-6138
message_*.properties
-从 maven-core 中删除过时的 - MNG-6140 -使用
resolver
++更新文档的依赖关系图resolver-provider
slf4j-provider
- MNG-6151 - 强制推送主从
737de43e392fc15a0ce366db98d70aa18b3f6c03
- MNG-6152 - 添加一个
Jenkinsfile
以便 builds.apache.org 可以使用多分支管道