sbt 1.3.8 发布本地创建一个 sbt 更新无法解析的 jar。Scala 版本附加到 jar 名称



我使用它工作sbt publishLocal发布了一些库,并发布到我的~/.ivy2/local目录中。

然后我有一个依赖于这些库的项目,但sbt update找不到它们。

具体来说,我的项目具有以下依赖项:

lazy val myDependencies = commonDependencies ++ Seq(
"my.corp"  %% "lib1" % "1.0.1-SNAPSHOT" withSources () withJavadoc (),
"my.corp"  %% "lib2" % "2.0.2-SNAPSHOT" withSources () withJavadoc ()
)

sbt update有此错误:

[error] (services / update) lmcoursier.internal.shaded.coursier.error.FetchError$DownloadingArtifacts: Error fetching artifacts:
[error] file:////home/myuser/.ivy2//local/my.corp/lib1_2.12/1.0.1-SNAPSHOT/jars/lib1.jar: not found: /home/myuser/.ivy2//local/my.corp/lib1_2.12/1.0.1-SNAPSHOT/jars/lib1.jar
[error] file://///home/myuser/.ivy2//local/my.corp/lib2_2.12/2.0.2-SNAPSHOT/jars/lib2.jar: not found: /home/myuser/.ivy2//local/my.corp/lib2_2.12/2.0.2-SNAPSHOT/jars/lib2.jar

当我查看目录时,我可以看到已发布的 jar,但它们的名称附加了 scala 版本,这就是update解析失败的原因,我认为:

$ ls /home/myuser/.ivy2/local/my.corp/lib1_2.12/1.0.1-SNAPSHOT/jars
lib1_2.12.jar  lib1_2.12.jar.md5  lib1_2.12.jar.sha1
$ ls /home/myuser/.ivy2/local/my.corp/lib2_2.12/2.0.2-SNAPSHOT/jars
lib2_2.12.jar  lib2_2.12.jar.md5  lib2_2.12.jar.sha1

如果我真正发布到存储库,我可以解析库。

有谁知道解决这个问题的sbt咒语吗?;-(

干杯 卡尔

更新:-我认为 coursier 是问题所在,不知道如何告诉它寻找lib2_2_12.jar。它可能有一个错误的缓存引用吗?

Caused by: lmcoursier.internal.shaded.coursier.cache.ArtifactError$NotFound: not found: /home/myuser/.ivy2/local/my.corp/lib2_2.12/2.0.2-SNAPSHOT/jars/lib2.jar

更新:-禁用库西耶工作 从 sbt REPL 我可以运行

sbt:my-project> set ThisBuild / useCoursier := false

然后

sbt:my-project> update

这奏效了,但将其设置回真实更新再次失败,所以这看起来是一个更棘手的问题。

更新:从命令行获取工作!!

coursier fetch my.corp::lib1:1.0.1-SNAPSHOT --no-default -r central -r ivy2Local

下载了传递依赖项,并在我当地的 Ivy2 目录中找到了我的 jar

所以这又回到了看起来像SBT - Coursier交互问题

我刚刚遇到了这个问题,在旧工作版本和这个非工作版本之间有很多差异之后,我发现是触发 sbt 和/或 coursier 错误withSources()

相关内容

  • 没有找到相关文章

最新更新