如何检查 pom.xml 以获取更新的依赖项

Posted

技术标签:

【中文标题】如何检查 pom.xml 以获取更新的依赖项【英文标题】:How to check pom.xml for updated dependencies 【发布时间】:2011-03-31 19:12:32 【问题描述】:

我对 Maven 和 pom.xml 还很陌生。有没有办法找出我的哪些依赖项已经过时,以便我可以更新我的 pom.xml 中的版本号。

例如,在其他语言中,Ruby 有一个命令 gem list outdated,它为我提供了一个我可以更新的依赖项(rubygems)列表

如果有帮助,我正在使用 IntelliJ Idea。

【问题讨论】:

【参考方案1】:

您可以使用Versions Maven Plugin 执行此操作。检查以下目标:

versions:display-dependency-updates 扫描项目的依赖项并生成有关具有较新版本可用的依赖项的报告。 versions:display-plugin-updates 扫描项目的插件,并生成一份关于那些有更新版本的插件的报告。

这是一个示例输出(取自示例):

Checking for new dependency updates

display-dependency-updates 目标将检查项目中使用的所有依赖项,并显示这些依赖项的列表以及可用的较新版本。

以下是一些示例:

svn 结帐 http://svn.codehaus.org/mojo/trunk/mojo/build-helper-maven-plugin build-helper-maven-plugin cd build-helper-maven-plugin

运行

mvn 版本:显示依赖更新

产生以下输出:

[信息] --------------------------------------------- ------------------------- [INFO] 构建构建助手 Maven 插件 [INFO] 任务段:[versions:display-dependency-updates] [信息] --------------------------------------------- ------------------------- [信息] [版本:显示依赖更新] [信息] [INFO] 以下依赖项更新可用: [信息] org.apache.maven:maven-artifact ...................... 2.0 -> 2.0.9 [信息] org.apache.maven:maven-plugin-api ...................... 2.0 -> 2.0.9 [信息] org.apache.maven:maven-project ..................... 2.0.2 -> 2.0.9 [信息] org.codehaus.plexus:plexus-utils ...................... 1.1 -> 1.5.6 [信息] [信息] --------------------------------------------- ------------------------- [信息] 构建成功 [信息] --------------------------------------------- ------------------------- [INFO] 总时间:17 秒 [INFO] 完成于:2008 年 8 月 15 日星期五 10:46:03 IST [INFO] 最终内存:10M/167M [信息] --------------------------------------------- -------------------------

Pom 安装

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>versions-maven-plugin</artifactId>
  <version>2.5</version>
</plugin>

【讨论】:

非常感谢。它对我来说真的很管用。使用非常直观 多模块项目将所有版本“外部化”到父 POM 中的 Maven 属性(最佳实践 IMO)可能会更好地在父模块中使用 mvn -N versions:display-property-updates 下面提供的此插件的 POM 依赖项 我的项目有一个 部分,其中包含 Spring Boot 的“spring-boot-dependencies”工件。因此,display-plugin-updates 的目标是显示大量我什至不使用的工件的潜在更新(即当我执行 mvn dependency:tree 时它们不显示)。这是一种忽略这种依赖关系的方法吗?【参考方案2】:

如果您想快速完成,可以使用www.versioneye.com 站点。

在那里您可以定义您的项目并上传项目pom.xml,该网站还会定期向您发送电子邮件,通知您有关新的更新。

您还可以提及要检查哪些库的更新。

我不知道它是否会自动与 maven repo 完全同步,但我总是发现它的 lib 版本是更新的。

更新:

该项目在 6 年后关闭 :(

所以mvn versions:display-dependency-updates 似乎是选择。

【讨论】:

【参考方案3】:

对此的 POM 依赖关系并不明显。

为了您的方便:

<dependency>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>2.1</version>
</dependency>

和存储库:

<repository>
    <id>Codehaus Mojo</id>
    <name>Codehaus Mojo</name>
    <url>https://nexus.codehaus.org/content/repositories/releases/</url>
</repository>

【讨论】:

仅供看到此内容的其他人参考,repo URL 现在为nexus.codehaus.org/content/repositories/releases,在发布此内容时,最新版本为 2.1 感谢@devalias,我已经更新了答案中的 url 标签以反映您的发现

以上是关于如何检查 pom.xml 以获取更新的依赖项的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot pom.xml 中临时禁用依赖项 [关闭]

在 POM 中更新依赖版本

为我的桌面集中 POM 依赖项

如何在 gradle 中重用 pom.xml 中定义的依赖项

如何在 Maven 依赖项 pom.xml 文件中添加其他参数

maven会在啥时候更新所有jar