SBT:如何确保本地快照依赖项被拾取?

Man*_*oid 1 scala sbt

我有 2 个 scala 项目,A 和 B。A 依赖于 B。在将更改推送到中央远程存储库之前,我必须进行一些本地测试。所以我在B中进行更改,将其version.sbt更改为0.0.1-SNAPSHOT并使用本地发布

sbt publishLocal
Run Code Online (Sandbox Code Playgroud)

我可以看到 0.0.1-SNAPSHOT 保存在“C:\var.ivy2\local”中。

在 A 中,我将 DependencyManagement.scala 更改为现在选取 B 的快照版本:

val BVersion = "0.0.1-SNAPSHOT"
Run Code Online (Sandbox Code Playgroud)

但在调试 A 期间,我看到 B 的类是从以下 jar 中获取的:C:\Users\myusername\AppData\Local\Coursier\cache\....\artifactory\virtual-ivy

如何确保选择快照版本?

Mar*_*lic 5

尝试将 coursier TTL设置为 0 秒build.sbt

import scala.concurrent.duration.DurationInt
import lmcoursier.definitions.CachePolicy

csrConfiguration := csrConfiguration.value
  .withTtl(0.seconds)
  .withCachePolicies(Vector(CachePolicy.LocalOnly)
Run Code Online (Sandbox Code Playgroud)

或通过环境变量

COURSIER_TTL="0s"
Run Code Online (Sandbox Code Playgroud)

根据 sbt文档

默认情况下,SNAPSHOTCoursier 中的工件具有 24 小时生存时间 (TTL),以避免网络 IO。如果您需要强制重新解析SNAPSHOTS,请运行 sbt 并将COURSIER_TTL环境变量设置为0s