当前位置: 首页 > 知识库问答 >
问题:

sbt 1.3。8 publishLocal创建了sbt update无法解析的jar。scala版本附加到jar名称之后

吕淮晨
2023-03-14

我发布了一些库使用sbt Publishloce它的工作和发布到我的~/. ivy2/loce目录。

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

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

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版本,这就是更新解析失败的原因,我认为:

$ 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运行的coursier

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

然后

sbt:my-project> update

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

更新:从命令行获取coursier成功!!

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

下载了传递依赖,并在本地ivy2目录中找到了我的jar

因此,这又回到了sbt-coursier交互问题上

共有1个答案

於彬
2023-03-14

我刚刚遇到了这个问题,在旧的工作版本和非工作版本之间有很多不同之后,我发现是with SSource()触发了sbt和/或Coursier中的错误。

 类似资料:
  • 我正在努力创造。用于简单hello world项目的jar文件,使用intellij IDE中的scala(2019.3.2社区版)和sbt构建工具(版本1.3.8)。对于scala 2.13版,我可以做到这一点,而不会出现任何问题。1.但是当我把这个改成2.11。12,sbt包因以下错误而损坏。我还想在这个项目中添加spark核心依赖项。所以我必须使用2.11。12版本,因为2.13没有兼容的版

  • 当我将mvn项目导入Intellij时,它生成的jar文件不包括版本。但是mvn生成的jar具有格式。所以我最终得到了两个jar文件,一个有版本,另一个没有版本。当然,我可以在Intellij设置中更改模块名称以包括版本。但当我更改pom文件时,它将被重置。 也许其他人有更好的主意?

  • 我有一个用java写的项目,我正在使用Gradle集成kotlin。我正试图遵循https://kotlinlang.org/docs/reference/using-gradle.html 我的建筑。Gradle 根据Kotlin错误:找不到org.jetbrains.Kotlin:kotlin-stdlib-jre7:1.0.7,该库仅在Kotlin V1.1及以上版本中可用。当我部署这个库并

  • 如何使用任务重命名gradle scala插件生成的jar,以包含scala版本名?我相信这个属性被称为:。它是通过java插件提供的(https://docs.gradle.org/current/dsl/org.gradle.api.Project.html#org.gradle.api.Project:archivesBaseName). 注意:我希望使用kotlin DSL完成此任务。 对

  • 问题内容: 我如何知道用来构建jar的Java编译器的版本?我有一个jar文件,它可以在三个JDK中的任何一个中构建。我们需要确切地知道哪一个,以便我们证明兼容性。编译器版本是否嵌入在类文件或jar中的某个位置? 问题答案: 您不一定无法从JAR文件本身中分辨出来。 下载十六进制编辑器,然后在JAR中打开一个类文件,并查看字节偏移量4到7。内置了版本信息。 http://en.wikipedia.

  • 我正在学习Gradle,但我不理解创建包含所有依赖项的jar的jar任务代码(摘自Gradle Cookbook): 3.zipTree方法,我假设它会解除每个jar的归档,但我不确定。我说的对吗? 问候,