发行说明 – Maven 3.5.0-alpha-1

Apache Maven 团队宣布发布 Maven 3.5.0-alpha-1。

Maven 3.5.0-alpha-1可供下载

Maven 是一个软件项目管理和理解工具。基于项目对象模型 (POM) 的概念,Maven 可以从一个中心位置管理项目的构建、报告和文档。

核心版本独立于可用的插件。插件的进一步版本将单独制作。有关更多信息,请参阅插件列表。

我们希望您喜欢使用 Maven!如果您有任何问题,请咨询:

已知的问题

在此ALPHA版本的发布测试期间发现了以下问题,但未将其视为发布阻止程序:

  • MNG-6177如果路径包含需要引用的字符(例如空格--file或.-fpom.xml&
  • MNG-6115如果 Maven 安装在可写位置,则每次构建都会创建一个新lib/ext/jansi-....文件。

为什么不是 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-6030记者:Andriy 撰稿人:Andriy
  • MNG-5934记者/撰稿人:Alex Henrie
  • MNG-5883记者:Ben Caradoc-Davies
  • MNG-3507贡献者:Jason Dillon、Sébastian Le Merdy

非常感谢所有记者和投稿人的时间和支持。

初步测试人员

也感谢您的时间和反馈。

有关更改的概述

  • 您可能遇到的最明显的变化是控制台输出现在具有颜色MNG-3507MNG-6093

  • 新的特殊属性在每个计算的 URL(项目、SCM、站点)中添加了对与 artifactId MNG-5878project.directory不匹配的模块目录名称的支持

  • JAVA_HOME发现已简化为简单地检查是否已设置然后JAVA_HOME尝试通过which javaMNG -6003进行发现。

  • 通过 Apache Ant 的构建引导支持已被删除。您现在只能使用以前版本的 Maven 引导 Maven 构建,但不能再使用 Ant MNG-5904

  • 基于M2_HOME与安装的不同 Maven 版本相关的使用问题并为简化操作,M2_HOME已删除并不再支持MNG-5823MNG-5836MNG-5607 的使用

  • Windows 用户的重要更改: 的用法%HOME%已替换为%USERPROFILE% MNG-6001

  • 已报告并修复了与mvnUnix/Linux/Cygwin/Solaris 或 Windows MNG-5815MNG-5852MNG-5963MNG-6022的脚本相关的几个问题。

  • 在 Maven 3.3.9 中,我们删除了 maven-ejb3-plugin 的绑定,因为它不存在。我们跟进并删除了MNG-6014ejb3MNG-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-SNAPSHOT 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-5297MNG-6092

改进:

错误:

  • 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-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-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-6171 - 回归:关于使用非线程安全标记插件的警告不再显示
  • MNG-6172 - 命令行系统属性选项的优先级已更改

依赖升级:

改进:

  • MNG-5579 - 统一来自 shell 和批处理脚本的错误输出/检查逻辑
  • MNG-5607 - 不再在 mvn shell/命令脚本中使用 M2_HOME
  • MNG-5883 - 使不必要的旧本地存储库警告静音
  • MNG-5889 - 使用 –file 时应选择 .mvn 目录
  • MNG-5904 - 删除整个 Ant 构建
  • MNG-5931 - 修复文档
  • MNG-5934 - PMD 识别的字符串处理问题
  • MNG-5946 - 修复 README.txt 中的链接等,这是交付的一部分
  • MNG-5968 - 默认插件版本更新
  • MNG-5975 - 在 CLIReportingUtils#formatTimestamp 中使用 Java 7 的 SimpleDateFormat
  • MNG-5977 - 提高我们的 MavenTransferListener 实现的输出可读性
  • MNG-5993 - 在 pluginManagement 中缺少/空 artifactId 和 version 的情况下出现令人困惑的错误消息
  • MNG-6001 - 在 mvn.cmd 中将 %HOME% 替换为 %USERPROFILE%
  • MNG-6003 - 大幅减少 JAVA_HOME 发现代码
  • MNG-6014 - 删除 ejb3 的 ArtifactHandler
  • MNG-6017 - 为 par LifeCycle 删除 ArtifactHandler
  • MNG-6030 - ReactorModelCache 在 maven 版本 3.0.5 之后没有有效使用,这会导致大量内存占用
  • MNG-6032 - 构建期间基于程序集描述符中的绝对路径发出警告。
  • MNG-6068 - 在 pom XSD 和参考文档中记录默认范围编译
  • MNG-6078 - 无法覆盖已在 .mvn/maven.config 中定义的属性
  • MNG-6081 - 日志重构 - 方法调用被变量替换
  • MNG-6102 - 在 m2.conf 中引入 ${maven.conf}
  • MNG-6145 - 删除 component.xml 中不存在的 m2 包含
  • MNG-6146 - 对代码和文档的几个小的风格和拼写改进
  • MNG-6147 - MetadataResolutionResult#getGraph() 包含重复的 if 子句
  • MNG-6150 - 3.5.0 的 Javadoc 改进
  • MNG-6163 - 在 shell 启动脚本中引入 CLASSWORLDS_JAR
  • MNG-6165 - 弃用并替换拼写错误的公共 API

新功能:

  • MNG-3507 - ANSI 颜色记录以提高输出可见性
  • MNG-5878 - 在每个计算的 URL(项目、SCM、站点)中添加对模块名称的支持!= artifactId:特殊的 project.directory 属性
  • MNG-6093 - 创建一个支持级别颜色渲染任务的 slf4j-simple 提供程序扩展
  • MNG-5954 - 删除过时的 maven-embedder/src/main/resources/META-INF/MANIFEST.MF
  • MNG-6106 - 从 m2.conf 中删除 maven.home 默认值设置器
  • MNG-6136 - 将 Maven Wagon 从 2.10 升级到 2.12
  • MNG-6137 - 清理由不完整的 Wagon HTTP 提供程序排除引起的重复依赖项
  • MNG-6138 - 从 maven-core 中删除过时的 message_*.properties
  • MNG-6140 - 使用 resolver + resolver-provider + slf4j-provider 更新文档的依赖关系图
  • MNG-6151 - 从 737de43e392fc15a0ce366db98d70aa18b3f6c03 强制推送主服务器
  • MNG-6152 - 添加 Jenkinsfile 以便 builds.apache.org 可以使用多分支管道

愿望:

  • MNG-2199 - 支持父元素中的版本范围
  • MNG-6088 - 分叉执行成功后,添加一个空行
  • MNG-6092 - 如果先决条件.maven 用于非插件项目,则发出警告

完整的变更列表可以在我们的问题管理系统中找到。

完整的发行说明

查看所有版本的完整发行说明