Maven 如果依赖项发生变化,我是否应该增加项目中的版本号?

Maven 如果依赖项发生变化,我是否应该增加项目中的版本号?,maven,versioning,Maven,Versioning,假设我有一个名为myLib-1.1.0的项目。该项目依赖于lib-dependency-1.2.3 如果这个依赖项有一个新版本,我需要使用它,我是否也应该更改我的项目版本?没有对myLib进行其他修改 同时,myLib是其他各种项目的依赖项。我主要关心的是依赖项中的一个小更改可能会对上游产生影响。任何可能影响行为的代码更改都应该给出一个新的版本号,换句话说:任何不是绝对微不足道的更改都应该给出一个新的版本号。一个改变了的依赖项肯定符合这个条件,因为,除非你对依赖项进行彻底的代码检查,否则你没有理

假设我有一个名为myLib-1.1.0的项目。该项目依赖于lib-dependency-1.2.3

如果这个依赖项有一个新版本,我需要使用它,我是否也应该更改我的项目版本?没有对myLib进行其他修改


同时,myLib是其他各种项目的依赖项。我主要关心的是依赖项中的一个小更改可能会对上游产生影响。

任何可能影响行为的代码更改都应该给出一个新的版本号,换句话说:任何不是绝对微不足道的更改都应该给出一个新的版本号。一个改变了的依赖项肯定符合这个条件,因为,除非你对依赖项进行彻底的代码检查,否则你没有理由认为他们只做了绝对微不足道的改变

变化常常被宣传为“小”(类似于我上面所说的绝对微不足道),但它们几乎从来都不是。在某些人的用例中,它们可能可以忽略不计,但在其他人的用例中却不能忽略不计。我甚至看到过这样的情况:在一个项目中,只有对Javadocs的更改会使事情变得一团糟。(你可能会争论,对一个人来说,如此强烈地依赖Javadoc是多么明智,但这不是重点,不是吗?)

这并不是说您不能累积更改并将一堆更改作为单个版本发布。在积累的过程中,您的项目处于不断变化之中,应该有一个
…-SNAPSHOT
版本。不应该有两个版本的
myLib-1.1.0
(没有
-SNAPSHOT
)有哪怕是最小的变化


您发布项目的事实也明确了一个事实,即应该重新进行回归测试等,以验证它仍在处理其依赖项中的更改。

是。在maven中,发布的版本是不可变的。如果您发布的1.1.0依赖于lib-dependency-1.2.3,则仅此而已

如果您更改为依赖lib-dependency-1.2.4,则这是一个新版本。您不应该重新部署1.1.0,因为有些人可能已经使用了1.1.0(假定是不可变的)。 因此,这意味着您需要一个不同的版本,即使它只是一个新的限定符(例如myLib-1.1.0-RC-2,但最好是1.1.1)

Maven在本地repo中有了远程repo后不会重新检查其发行版本,因此如果有人已经在本地有了1.1.0,他们将不会得到新的、固定的1.1.0

还有你的涟漪问题。上游项目应取决于最低可接受的发布版本。i、 e.如果上游项目本身不需要(间接地)lib-dependency-1.2.4,因此可以使用myLib-1.1.0,那么它应该使用1.1.0