如何升级 maven 插件的版本?

Posted

技术标签:

【中文标题】如何升级 maven 插件的版本?【英文标题】:How do I upgrade the version of a maven plugin? 【发布时间】:2010-10-21 15:43:43 【问题描述】:

我正在使用 maven-ear-plugin 版本 2.3.1 - 我知道有一个新版本可用:http://maven.apache.org/plugins/maven-ear-plugin/

我不知道如何升级到最新版本?

【问题讨论】:

您确定您没有获得最新版本吗? maven 会自动为您执行此操作。 【参考方案1】:

尽管这已经得到了“认可的答案”,但事实证明,有这个AWESOME versions plugin 可以处理永无止境的版本维护问题。

对于那些懒惰的人,这里有一些目标:

versions:display-dependency-updates 扫描项目的依赖项并生成具有更新版本可用的依赖项的报告。 versions:display-plugin-updates 会扫描项目的插件并生成一份关于那些有较新版本可用插件的报告。 versions:display-property-updates 扫描项目并生成用于控制工件版本的属性以及哪些属性有更新版本可用的报告。 versions:update-parent 更新项目的父部分,使其引用最新的可用版本。例如,如果您使用公司根 POM,如果您需要确保使用的是最新版本的公司根 POM,此目标可能会有所帮助。 versions:update-properties 更新项目中定义的属性,以便它们对应于特定依赖项的最新可用版本。如果必须将一组依赖项都锁定到一个版本,这会很有用。 versions:update-child-modules 更新项目子模块的父部分,以便版本与当前项目的版本匹配。例如,如果您有一个聚合器 pom,它也是它聚合的项目的父级,并且子级和父级版本不同步,则此 mojo 可以帮助修复子模块的版本。 (请注意,如果您的项目因版本不匹配而严重损坏而无法构建,您可能需要使用 -N 选项调用 Maven 才能运行此目标。 versions:lock-snapshots 在 pom 中搜索所有 -SNAPSHOT 版本,并将它们替换为该 -SNAPSHOT 的当前时间戳版本,例如-20090327.172306-4 versions:unlock-snapshots 在 pom 中搜索所有时间戳锁定的快照版本,并将它们替换为 -SNAPSHOT。 versions:set 可用于从命令行设置项目版本。 versions:use-releases 在 pom 中搜索所有已发布的 -SNAPSHOT 版本并将其替换为相应的发布版本。 versions:use-next-releases 在 pom 中搜索所有较新版本的非 SNAPSHOT 版本,并将其替换为下一个版本。 versions:use-latest-releases 在 pom 中搜索所有较新版本的非 SNAPSHOT 版本,并将其替换为最新版本。 versions:use-next-snapshots 在 pom 中搜索所有已是较新 -SNAPSHOT 版本的非 SNAPSHOT 版本,并将它们替换为下一个 -SNAPSHOT 版本。 versions:use-latest-snapshots 在 pom 中搜索所有已是较新 -SNAPSHOT 版本的非 SNAPSHOT 版本,并将它们替换为最新的 -SNAPSHOT 版本。 versions:use-next-versions 在 pom 中搜索所有较新版本的版本并将其替换为下一个版本。 versions:use-latest-versions 在 pom 中搜索所有较新版本的版本,并将其替换为最新版本。

【讨论】:

感谢 @Pat 分享关于这个伟大的 Maven 插件的信息! 这个插件是我想要的,但你可能想先运行 mvn --version 并确保你的 pom.xml 指定类似 ` 3.3.9先决条件>`所以它不会下载互联网。 我在我的 pom.xml 中使用了 <plugin> <artifactId>maven-clean-plugin</artifactId> <version>2.6.1</version> </plugin> 在运行 mvn versions:display-plugin-updates 之后,我没有得到任何对 maven-clean-plugin 的引用。在 mvnrepository.com/artifact/org.apache.maven.plugins/… 我看到最后一个版本是 3.1.0 。它是一个错误吗?我错过了什么吗? 获取您刚刚输入的所有内容的简单方法是运行mvn -Dplugin=versions help:describe【参考方案2】:

默认插件版本继承自Super POM,可以通过mvn help:effective-pom查看。

如果您想覆盖那里提供的版本,请将其添加到您的 POM:

<project>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.3.1</version>
      </plugin>
    </plugins>
  </build>
</project>

用你需要的版本替换。

【讨论】:

如果插件在没有任何 POM 的情况下从命令行使用,例如 maven-install-plugin,该怎么办?例如,我尝试按照以下步骤在本地存储库中安装 jar:maven.apache.org/guides/mini/guide-3rd-party-jars-local.html 在最后一段中,他们提到了 maven-install-plugin 2.5 版的一个很酷的功能,但每当我运行命令时,maven-3.3.9正在使用插件的 2.4 版本,即使我在 repo 中也有 2.5.2 版本。我什至试图从我的 repo 中删除 2.4,但 maven 重新下载了它。我在哪里可以配置它? 好的,我在这里找到了我的问题的答案:***.com/questions/25155639/…【参考方案3】:

如何选择插件的版本,以及关于 superpom 中插件版本的讨论在here 中有详细介绍。

其实当前选择的答案不太对。应该是

<project>
  <build>
   <pluginManagement>
    <plugins>
      <plugin>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.3.1</version>
      </plugin>
    </plugins>
   </pluginManagement>
  </build>
</project>

我解释了为什么here:

“常规插件部分还允许定义版本和默认配置,这就是混乱所在。在这里定义插件版本和默认配置在技术上是有效的,但我发现更容易理解 pom遵循本指南时:

如果插件块没有定义执行(因此绑定 maven 以在生命周期中执行某些操作),则将该块放入 pluginManagment"

【讨论】:

你应该把链接的信息(或至少一个摘要)放在帮助中,“总是引用重要链接的最相关部分,以防目标站点无法访问或消失永久离线。” 这样应该更好【参考方案4】:

一些 maven 插件仅限于 maven 版本。例如,这里的项目通常使用 Maven 2.0.4,它被限制使用 war 插件 2.0.2 - 这适用于覆盖。然而,Maven 2.0.9 使用的 2.1-alpha 没有——所以我们不得不手动降级。除非另有说明,否则 Maven 将尝试根据其版本使用插件的最新版本。

【讨论】:

以上是关于如何升级 maven 插件的版本?的主要内容,如果未能解决你的问题,请参考以下文章

将 Maven 插件升级到 Java 11

关于 Maven 版本插件

如何将 Outlook 2007 VSTO 插件升级到新版本

Maven/Eclipse/Android升级API版本

MAVEN的项目升级

katalon studio升级到6.3.3版本后如何生成测试报告