【问题标题】:Versions Maven Plugin: package not found after versions:use-latest-versions版本 Maven 插件:在版本之后找不到包:使用最新版本
【发布时间】:2016-11-22 19:10:08
【问题描述】:

当我在我的 Maven 项目中执行 Versions Maven Plugin 插件时,使用以下命令:

mvn versions:use-latest-versions

pom.xml 按照它应该做的那样使用更新的依赖项进行更新。

问题是一些库更新到新版本,因为不包含以前版本中使用的一些包,所以编译器说找不到包。有人知道如何自动避免吗?我的意思是,更新到包含我在代码中使用的包和类的最新版本。

【问题讨论】:

  • 我不确定我是否了解您的用例。假设您将包 X 列为依赖项。 X 依赖于 Y,您也使用 Y,但不要将其明确列为依赖项。现在你有版本插件更新并且 Y 不再是 X 的依赖项但你仍然在你的代码中使用它?
  • 我在做一个假设,但我不认为插件的目的是在升级依赖项后检查您的代码是否仍在编译。实际上,这非常危险,因为您可能拥有(就像您刚才所说的)引用不推荐使用的方法等的源代码......导致错误。而且可能不止这些:您考虑过许可证吗?无论如何,看看这里,你的上下文有很好的答案:here

标签: java maven versions-maven-plugin


【解决方案1】:

在我看来,没有简单的方法可以确定哪个版本更新是“保存”的。

即使您检查编译所针对的所有类是否仍然存在,方法签名也可能已更改。即使所有的方法签名保持不变,行为也可能已经改变,导致运行时异常等。

我知道检查版本更新的唯一合理方法是运行编译并运行所有测试用例。对所有可能的版本更新组合执行此操作是可能的,但这将花费大量时间。

【讨论】:

  • 所有的回答都很好,我同意你是第一个回答的人
【解决方案2】:

插件不会分析你的代码并相应地调整依赖版本。

目标use-latest-versions 的目标是将您的项目升级到项目依赖项的最新版本,因此您可能会遇到编译和部署问题。 确定问题后,您需要修复所有问题,以便将整个项目升级到最新版本的依赖项。

【讨论】:

    【解决方案3】:

    问题是某些库已更新为新版本 不包含以前版本中使用的一些包,所以 编译器说找不到包。有谁知道如何避免 自动地?我的意思是,更新到具有 我在代码中使用的包和类。

    当然不可能。

    更新依赖关系不是靠运气的游戏。
    如果你需要一个依赖的最后一个版本,你不应该担心这个版本是否因为你需要而破坏或没有破坏你的代码。
    您更新库是因为您需要更新该版本。如果您不需要更新您的依赖项,请不要更新您的依赖项,但如果您需要这样做,您应该在必要时也更新您的代码。

    【讨论】:

      猜你喜欢
      • 2016-07-24
      • 2015-10-02
      • 2018-09-02
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      相关资源
      最近更新 更多