sbt,如何维护自己的库?

sbt, how to maintain own libraries?

假设我们有三个项目(括号中的版本):

A (0.0.1)
B (0.0.1), depends on A (0.0.1)
C (0.0.1), depends on B (0.0.1)

C 取决于 A 和 B。

现在我们想在我们的新项目 (D) 中使用这个库作为依赖项。 所以我们添加部门:

C (0.0.1)

然后我们了解到 A 缺少一些功能,所以我们创建它并将 A 的版本增加到 0.0.2 并将此依赖项添加到 D:

C (0.0.1)
A (0.0.2)

Sbt 在编译 D 时会抱怨这个 deps,类似

[warn] There may be incompatibilities among your library dependencies. [warn] Here are some of the libraries that were evicted: [warn] * A:0.0.1 -> 0.0.2

所以我想知道,对于此类情况,最佳做法是什么?我认为 sbt 知道语义版本控制并理解 0.0.1 与 0.0.2 兼容并且不会显示任何警告。

我看到了两种方式:

  1. 当你增加A版本时,你也会增加B依赖的A的版本:

    B (0.0.1), depends on A (0.0.2)

  2. 添加SNAPSHOT版本:

    A (0.0.1-SNAPSHOT)

    B (0.0.1), depends on A (0.0.1-SNAPSHOT)

语义版本控制也不是严格的规则,您不能完全依赖它,因为并非所有开发人员都遵守它,这就是为什么我认为 sbt 警告是合法的。