【问题标题】:Why default maven uses such old versions of plugins?为什么默认 maven 使用这么旧版本的插件?
【发布时间】:2021-05-04 19:26:25
【问题描述】:

我是 Maven 新手,正在努力找出当 pom.xml 中没有定义版本时,maven 如何决定使用哪个版本的插件(例如 maven-compiler)。

使用最新的 maven 版本 3.8.1。创建了一个 hello-world java 程序并运行 mvn compile。 它下载以下版本: maven-resources-plugin:2.6:resources (默认资源) maven-compiler-plugin:3.1:compile (default-compile)

maven-compiler-plugin:3.1 于 2013 年 4 月发布。最新的是 3.8.1。当我在 pom 中没有给出任何具体内容时,为什么 maven 不使用最新版本?

与 maven-resources-plugin:2.6 相同。此版本于 2012 年 8 月发布。最新版本为 3.2.0。

我知道我可以在 pom.xml 中定义这些插件的最新版本。但是为什么默认的 maven 使用这么旧的版本呢?我是否缺少任何配置?

【问题讨论】:

标签: java maven


【解决方案1】:

您缺少配置意味着您必须通过 pluginManagement 定义适当的插件(所有插件及其版本)。

如果更改默认设置,我们会有很多项目失败。

我强烈建议定义这里给出的版本https://maven.apache.org/plugins/

通常,插件版本的定义是公司母公司的一项任务,即在一个位置定义所有插件和默认配置。

【讨论】:

  • 谢谢,我确实参考了该插件页面并希望使用最新版本。将它们放入应用程序 pom.xml 中。母公司是什么意思?我相信插件需要在每个应用程序父 pom.xml 中定义。
  • @Donald 公司通常有自己的父 POM,为所有 Maven 项目服务。
  • @Fabian 谢谢,我不知道这一点。我应该如何设置它?有任何链接或最佳实践吗?我计划在我们组织内为所有 maven 项目使用 Nexus 存储库。
  • 一个公司 pom 只是一个单独的 maven 项目,它只包含一个 pom.xml,它定义了所有这些......你发布它的一个版本并使用它所有的项目......我我自己做了很长时间github.com/khmarbaise/smpp
  • 通配符可能会导致问题并妨碍重现性。您应该定义一个包含一组版本(插件管理)的父 pom。您还可以创建报告 (mojohaus.org/versions-maven-plugin/…),应该定期检查这些报告(以 ci 解决方案为例)..
猜你喜欢
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 2018-09-02
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
相关资源
最近更新 更多