发行说明 – Maven 3.5.0

Apache Maven 团队宣布发布 Maven 3.5.0。

Maven 3.5.0可供下载

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

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

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

为什么不是 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

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

测试人员

以下 Maven 社区成员在发布过程中提供了宝贵的反馈:

  • 格热戈日格日别克
  • 彼得·希罗基
  • 马克·德里克特,
  • 德扬·斯托亚迪诺维奇
  • 托马斯·科利尼翁
  • 弗雷德·库克
  • 拉斐尔·阿克曼
  • 艾略特·梅茨格
  • 查斯·洪顿
  • 丹尼斯·基塞尔霍斯特

感谢您的时间和反馈。

有关更改的概述

  • 您可能遇到的最明显的变化是控制台输出现在具有颜色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 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

  • 将 Eclipse Aether 替换为Maven Resolver MNG-6110MNG-6140

  • 通过 和/或 使用 CI 友好版本${revision}${sha1}修复${changelist}MNG -6057MNG-6090MNG-5895。知道你是否在你的 pom 中使用之前命名的属性是非常重要的,你必须使用flatten-maven-plugin如果你想做一个mvn installmvn 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 - --fileWindows 和 Unix 启动器的命令行选项不适用于像“ Spaces & Special Char”这样的目录名称
  • MNG-6180 - 目标失败时 groupId 具有纯色
  • MNG-6181 - HttpClient 在调试日志级别产生大量噪音
  • MNG-6183 - 依赖管理调试消息更正。
  • MNG-6190 - maven-resolver-provider 的DefaultArtifactDescriptorReader构造函数和 initService 方法不匹配
  • MNG-6191 -mvn -f抱怨readlinkmacOS 下的非法选项
  • MNG-6192 - 分发 zip 文件包含无序条目
  • MNG-6195mvn - 在启动器脚本中使用一致的引用形式
  • MNG-6198 -使用指定位置时mvn脚本无法找到.mvn目录pom.xml-f

依赖升级

改进

  • MNG-5579 - 统一来自 shell 和批处理脚本的错误输出/检查逻辑
  • MNG-5607 - 不再M2_HOMEmvnshell/命令脚本中使用
  • MNG-5883 - 使不必要的旧本地存储库警告静音
  • MNG-5889 -.mvn使用时应选择目录--file
  • MNG-5904 - 删除整个 Ant 构建
  • MNG-5931 - 修复文档
  • MNG-5934 - PMD 识别的字符串处理问题
  • MNG-5946 - 修复链接等,README.txt其中是交付的一部分
  • MNG-5968 - 默认插件版本更新
  • MNG-5975SimpleDateFormat -在中使用 Java 7CLIReportingUtils#formatTimestamp
  • MNG-5977 - 提高我们MavenTransferListener实现的输出可读性
  • MNG-5993 - 在丢失/空的情况下混淆错误消息artifactIdversionpluginManagement
  • MNG-6001 - 替换%HOME%%USERPROFILE%inmvn.cmd
  • MNG-6003 - 大幅减少JAVA_HOME发现代码
  • MNG-6014ejb3 - 为生命周期移除 ArtifactHandler
  • MNG-6017par - 为生命周期移除 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-6163CLASSWORLDS_JAR -在 shell 启动脚本中引入
  • MNG-6165 - 弃用并替换拼写错误的公共 API
  • MNG-6179 - 删除未使用的先决条件
  • MNG-6185 - 用 AbstractMojo javadoc 中的注释替换 doclettag 解释
  • MNG-6189 - 如果 maven-site-plugin 配置包含reportPlugins元素,则发出警告

新特性

  • MNG-3507 - ANSI 颜色记录以提高输出可见性
  • MNG-5878artifactId -在每个计算的 URL(项目、SCM、站点)中添加对模块名称的支持!= :特殊project.directory属性
  • MNG-6093 - 创建slf4j-simple支持级别颜色渲染的提供程序扩展
  • MNG-6182 - ModelResolver 界面增强:添加resolveModel(Dependency)支持的版本范围

任务

  • 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-6138message_*.properties -从 maven-core 中删除过时的
  • MNG-6140 -使用resolver++更新文档的依赖关系图resolver-providerslf4j-provider
  • MNG-6151 - 强制推送主从737de43e392fc15a0ce366db98d70aa18b3f6c03
  • MNG-6152 - 添加一个Jenkinsfile以便 builds.apache.org 可以使用多分支管道

愿望

  • MNG-2199 - 支持父元素中的版本范围
  • MNG-6088 - 分叉执行成功后,添加一个空行
  • MNG-6092 - 警告是否prerequisites.maven用于非插件项目

完整的发行说明

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