2016-11-22 131 views
0

当我在Maven项目执行版本Maven插件插件使用以下命令:版本Maven插件:包版本后未发现:用最新版本

mvn versions:use-latest-versions

pom.xml中被按照它应该做的更新依赖关系更新。

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

+0

我不确定我是否理解你的用例。假设您将软件包X列为依赖项。 X依赖于Y并且您也使用Y,但不要将其明确列为依赖项。现在你有版本插件更新和Y不再是X的依赖,但你仍然在你的代码中使用它? – Matthias

+0

我正在做一个假设,但我不认为插件的目的是在升级依赖关系后检查代码是否仍在编译。事实上,这是相当危险的,因为你可能有(如你刚才所说的)源代码引用了不推荐的方法等等,导致错误。 而且可能还有更多:你认为**执照**吗? 无论如何,看看这里,有很好的回答你的背景: [here](http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-最新版本的依赖) – MadJlzz

回答

2

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

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

我知道检查版本更新的唯一合理方法是运行编译并运行所有测试用例。为可能的版本更新的所有组合执行此操作是可能的,但这需要很长时间。

+0

所有回复都很好,我给你接受是第一个回答的人 –

2

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

目标use-latest-versions的目标是将项目升级到最新版本的项目依赖关系,并且由于您可能遇到编译和部署问题。 一旦确定了需要修复所有问题的问题,以便将整个项目升级到最新版本的依赖关系。

2

的问题是,一些库更新到版本如新 的不包含某些早期版本中使用的软件包使 编译器说找不到包。有谁知道如何自动避免 ?我的意思是,更新到最新版本,其中包含我在代码中使用的包和类。

当然,这是不可能的。

更新依赖关系不是偶然的游戏。
如果您需要拥有最新版本的依赖关系,则不必担心该版本是因为您需要而中断还是不会中断您的代码。
由于需要更新该版本,因此您需要更新库。如果你不需要更新你的依赖关系,不要更新你的依赖关系,但是如果你需要这样做的话,如果有必要,你应该做更新代码的工作。