我的图书馆很少,其中一些依赖于另一个图书馆。所以对于例如:
1.0.0 没有依赖
B 1.0.0 取决于:1.0.0
问题是:
如果我使用1.0.1发布A,并且此版本向后兼容1.0.0,我应该发布B吗?
答案 0 :(得分:1)
这很大程度上取决于代码的细节以及工件的部署方式,但一般来说,您需要发布B以使A中的代码更改可见。
<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。<dependency>
都在内置战争的lib
目录中提供。为了将A中的错误修复发布到此Web应用程序,您需要发布B 1.0.1,并在A上更新其<dependency>
以指向A 1.0.1。在第一个示例中,(客户端依赖于B作为jar),可能的解决方法是客户端通过在A上添加自己的显式<dependency>
来覆盖A的版本,可能使用版本范围灵活地获取最新发布的版本。这可能会导致维护陷阱,因为这意味着客户端正在组合A版本和B版本,这些版本未作为B版本的一部分进行测试。一般来说,最好是发布B,但如果很难发布B,那么这可能是一个可行的短期解决方法。
有关传递依赖关系和版本范围语法的更多详细信息,请访问: