我有 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
如何确保选择快照版本?
尝试将 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