Maven 更新 POM 中的依赖项
Posted
技术标签:
【中文标题】Maven 更新 POM 中的依赖项【英文标题】:Maven update dependencies in POM 【发布时间】:2010-11-01 15:58:41 【问题描述】:是否有任何预先存在的 Maven 插件或命令来更新 POM 中的依赖项? 示例:(如果这是在我的 POM 中)
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
是否有我可以运行的命令或插件将依赖项更新为:
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
【问题讨论】:
如果插件能够简单地检查更新并通知我,我会非常高兴。对新版本插件的同样检查也很简洁。 我一直在想,这可能是我将要构建的 Mojo 的目标之一。 【参考方案1】:试试maven-versions-plugin,尤其是versions:use-latest-versions 目标。
【讨论】:
这可以满足发帖者的要求,尽管我认为 use-latest-releases 在大多数情况下会更好。但这绝对是要使用的插件。 当,现在我已经构建了它!我想俗话说,“除非你想了解很多关于***的知识,否则不要重新发明***”。 :) 谢谢! 是的——我错过了使用最新版本。谢谢,扎克。 如果您只需要获取公司库的最新版本,您可以使用以下 Maven 属性来实现:-Dincludes=com.mycompany:*【参考方案2】:我更喜欢使用mvn versions:display-dependency-updates;这会生成一份报告,说明哪些依赖项可以升级,但允许您自己修改 POM。还有一个用于插件的 display-plugin-updates 命令。
【讨论】:
为我工作!出于某种原因,该链接总是将我带到 mojo 主页,我将在此处粘贴链接:mojohaus.org/versions-maven-plugin/… 谢谢,我已经用流亭的新链接修复了链接。【参考方案3】:我个人认为maven中应该有一个额外的参数可以让你添加到pom.xml中。
查看http://maven.40175.n5.nabble.com/Is-there-any-maven-plugin-to-add-dependency-to-existing-pom-xml-td2839092.html#a5772853的帖子
在这里,您可以将以下内容添加到您的 pom.xml 文件中:
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.1</version>
</plugin>
...
</plugins>
...
</build>
...
</project>
...
然后通过版本设置命令备份你的 pom.xml 文件:
mvn versions:set -DnewVersion=9.9.9
运行最新版本:
mvn versions:use-latest-versions
并区分 pom.xml 文件 pom.xml 和 pom.xml.versionsBackup
【讨论】:
【参考方案4】:你可以在你的父 pom 中使用dependencyManagement:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
</dependencyManagement>
这样,您只需在父 POM 中更改一次版本
【讨论】:
这比以您可能或可能无法控制的方式进行一些工具更新更可取。您还保证所有孩子都将使用指定的版本。 @MikePone 取决于用例 - 有一些有效的,就像部署 pom 需要始终使用您自己的工件的最新版本,这是一个常见的需求。一般来说,当然,你是对的。【参考方案5】:不,没有。并且很高兴没有。这样的工具如何知道如何升级您的依赖项?
由于次要版本之间可能发生损坏,这将是一场等待发生的灾难。
但您始终可以为此 write your own Mojo。
从 Maven 存储库获取最新版本的依赖项 与 pom.xml 中的版本比较 重写 pom.xml 运行mvn test
?
利润!
【讨论】:
我有点想这就是结果 - 我一直在寻找一个 Mojo 项目来做,谢谢。 这总是一件好事。如果您决定采用开源方式,请务必发布链接。 这可能曾经是正确的,但现在不再正确(@Robert:建议您完善您的答案?)。 @Andrew:接受的答案是正确的,所以我不会只是复制它。我仍然觉得创造这样的马具会很有趣。 在 npm 之类的时代,这个问题并不牵强。以上是关于Maven 更新 POM 中的依赖项的主要内容,如果未能解决你的问题,请参考以下文章
如何找出是不是在 Maven 应用程序中使用了依赖项中的任何类?