与Java 17兼容的Maven的最低和最高版本

lstz6jyr  于 2023-11-17  发布在  Maven
关注(0)|答案(1)|浏览(403)

在标题中,我正在搜索确保与Java 17兼容的Maven版本范围,但我在Web或Maven文档中找不到任何东西。

nvbavucw

nvbavucw1#

这个问题回答不清楚,原因是Maven组织在plugins中,插件负责执行JDK得相应工具和其他任务,例如:

  • maven-compiler-plugin:执行javac(或者更具体地说,默认使用javax.tools.JavaCompiler)。
  • maven-jar-plugin:汇编.jar(它不使用jar命令自动执行此操作)。

pom.xml中显式定义插件版本也是一种常见(也是良好)的做法。
由于Java到目前为止在构件的向后兼容性方面相当温和(出于安全考虑,该策略似乎是shift a bit)它能够执行很久以前的Maven版本。(实际上,根本原因是Java没有提供它自己的正确构建工具,也没有像nodejsnpm那样的默认存储库-Maven和Gradle正在填补的空白)。
与此同时,Maven对于插件的向上兼容性非常温和,只要使用相同的模型版本(现在已经很长一段时间是版本3),并且其他依赖项是兼容的,最重要的是Plexus
例如,您可以运行Maven并使用oldest Maven 3 version available编译Java 17源代码,oldest Maven 3 version available3.0,最早可追溯到2010年。即使是modules-info.java也能正确编译,因为这是Java的责任,而不是Maven的责任。但是,此版本使用http而不是https配置了中央存储库,而https现在已被服务器拒绝。但您当然可以更改配置。
支持的特性是另一回事。例如,--release选项添加到javac与Java 9是支持maven-compiler-plugin从3.6.x和更新(通过maven.compiler.release指定)。然而,即使是与Maven 3.0,你可以使用maven-compiler-plugin 3.10.1,这已经发布了12年后(虽然它停止与3.11.0)。
让我们以另一个特性为例:Java 9模块。仍然有一些Maven插件,并不完全支持它,如maven-shade-plugin。它可以修改常规类,但not a modules-info.class
最后让我把你们的问题
在不更改配置的情况下,最早的现成可用Maven版本是什么?*

第3.2.3条

它是否与Java 17兼容?
基本上是的
是否推荐使用?
当然没有
建议的版本是什么?

    • 最新,3.9.5*
      所有Maven插件是否都有与最新Java版本完全兼容的版本?

不,永远不会有。

  • 如写作时

相关问题