【问题标题】:Maven update dependencies in POMMaven 更新 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 的目标之一。

标签: java maven-2 plugins command


【解决方案1】:

【讨论】:

  • 这可以满足发帖者的要求,尽管我认为 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 之类的时代,这个问题并不牵强。
    猜你喜欢
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2017-10-25
    相关资源
    最近更新 更多