处理直接依赖,这也是传递依赖

问题描述 投票:0回答:1

我有一个 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
    ,而依赖于传递依赖。我想不出不这样做的好理由,但确实感觉很脏。

是否有一种普遍接受的方法来处理我忽略的这种情况?

java maven dependency-management
1个回答
0
投票

我可以根本不在我的 Maven 构建中声明 dep-b,而是依赖传递依赖。我想不出不这样做的好理由,但确实感觉很脏。

我认为这是正确的做法。

dep-a
(版本为
x
)应该经过测试并证明它与
dep-b
(版本为
y
)兼容。

如果您在

dep-b
<dependency>
块中排除
dep-a
,然后单独注入它,那么您可能会遇到兼容性问题(尤其是当
dep-b
发布更频繁时)。

© www.soinside.com 2019 - 2024. All rights reserved.