我有一个 Maven 项目,它有两个直接依赖项,我们称它们为
dep-a
和 dep-b
,它们都在项目中大量使用。 dep-a
本身对dep-b
有传递依赖。出于兼容性原因,我希望项目中 dep-b
的版本与 dep-b
声明的 dep-a
版本保持一致。 dep-b
是一个进展非常快的项目;它经常发布新版本。 dep-a
更新有点慢。我正在寻找一种实用的方法来管理此问题,同时尽可能保持版本最新。
以下是我正在考虑的一些可能性。没有一个让我真正满意:
目前,我在项目中使用 Dependabot,它会定期检查新版本并在新版本可用时更新它们。这样做的缺点是,即使
dep-b
尚未执行相同操作,它也可能会更新我的项目中的 dep-a
,从而导致 dep-b
版本不匹配。
我可以接受这是生活的事实并继续前进,但这实际上并不能解决问题。
我可以放弃 Dependabot 并自己定期更新内容。然而,这是一项繁忙的工作,我宁愿看到自动化。
我可以放弃 Dependabot 并自己编写一个复杂的脚本,利用 Maven 的版本插件来检查更新。我之前在另一个项目中做过一次,这比我想象的要多得多。另外,我必须添加一些额外的逻辑来解释
dep-b
版本。
我根本无法在 Maven 构建中声明
dep-b
,而依赖于传递依赖。我想不出不这样做的好理由,但确实感觉很脏。
是否有一种普遍接受的方法来处理我忽略的这种情况?
我可以根本不在我的 Maven 构建中声明 dep-b,而是依赖传递依赖。我想不出不这样做的好理由,但确实感觉很脏。
我认为这是正确的做法。
dep-a
(版本为x
)应该经过测试并证明它与dep-b
(版本为y
)兼容。
如果您在
dep-b
的 <dependency>
块中排除 dep-a
,然后单独注入它,那么您可能会遇到兼容性问题(尤其是当 dep-b
发布更频繁时)。