在 build.sbt 中,我们可以声明依赖项的范围;例如:
libraryDependencies += groupID %% "mylib" % "[2.0,)"
(在我的情况下)有多个软件包都在此范围内(我有2.0.2、2.0.3、2.0.4,甚至还有一些更奇特的版本,例如2.0.dev和2.0.3-dev mylib 在我的存储库中可用)。
当我尝试构建此项目时,sbt
因此没有明显的理由选择版本 2.0.2 。我希望他能在这个范围内选出最多的人,但他永远不会。这是我尝试的要求以及他选择的版本(因此只有在指定确切的版本号时,他才会选择更新的版本):
revision range | version selected
-----------------------------------------
[2.0,) | 2.0.2
[2.0.0,) | 2.0.2
]2.0,) | 2.0.2
2.0.+ | 2.0.2
latest.integration | 2.0.2
2.0.3 | 2.0.3
2.0.4 | 2.0.4
我已经尝试了以下解决方法:
sbt -no-share -sbt-dir /tmp/sbt -ivy-dir /tmp/ivy
以避免任何缓存效果答案 0 :(得分:0)
问题(一次)似乎不存在于sbt
中。
我尝试使用 sbt 1.2.1 和范围2.1.x
。现在sbt抱怨说他找不到这种依赖关系。他列出了可用的版本:
[warn] ==== my-maven-repo: tried
[warn] http://my-server/nexus/repository/my-repo/eu/company/mylib_2.12/[revision]/mylib_2.12-[revision].pom
[warn] [2.0.2, 2.0.2-dev.20180719.16.55.39.develop.dc3a706, 2.0.1-dev.20180719.16.49.57.develop.dc3a706, 2.0.1-dev.20180719.16.42.31.develop.dc3a706, 2.0.1.dev.20180719.16.31.59.develop.dc3a706]
奇怪的是,他没有列出我的nexus-maven存储库中所有可用的软件包。 使用nexus接口删除一个软件包后;看来此清单已经完成。
因此,真正的问题似乎是,sbt publish
到一个关系存储库中并没有在该存储库中重新创建索引(sbt
或nexus
方面的问题,仍然需要确定)。