如果其中一个依赖项发生了变化,我应该发布maven库吗?

时间:2017-07-28 15:59:25

标签: maven versioning release-management

我的图书馆很少,其中一些依赖于另一个图书馆。所以对于例如:

1.0.0 没有依赖

B 1.0.0 取决于:1.0.0

问题是:

如果我使用1.0.1发布A,并且此版本向后兼容1.0.0,我应该发布B吗?

1 个答案:

答案 0 :(得分:1)

这很大程度上取决于代码的细节以及工件的部署方式,但一般来说,您需要发布B以使A中的代码更改可见。

  • 假设B是一个jar工件,另一个客户端在该工件上有<dependency>。这意味着客户端也具有对A的传递依赖性,但是在B中的<dependency>中表达的特定版本。以您的示例为例,客户端依赖于B 1.0.0,它本身具有依赖于A 1.0.0,因此客户端将传递一个1.0.0。为了将A中的错误修复发布到此客户端,您需要发布B 1.0.1,并在A上更新其<dependency>以指向A 1.0.1。
  • 假设B是部署在Web应用程序容器中的war工件。 Web应用程序使用的每个jar <dependency>都在内置战争的lib目录中提供。为了将A中的错误修复发布到此Web应用程序,您需要发布B 1.0.1,并在A上更新其<dependency>以指向A 1.0.1。

在第一个示例中,(客户端依赖于B作为jar),可能的解决方法是客户端通过在A上添加自己的显式<dependency>来覆盖A的版本,可能使用版本范围灵活地获取最新发布的版本。这可能会导致维护陷阱,因为这意味着客户端正在组合A版本和B版本,这些版本未作为B版本的一部分进行测试。一般来说,最好是发布B,但如果很难发布B,那么这可能是一个可行的短期解决方法。

有关传递依赖关系和版本范围语法的更多详细信息,请访问: