gpt4 book ai didi

scala - 添加未在其 URL 中指定 SBT 版本的 SBT 插件

转载 作者:行者123 更新时间:2023-12-01 22:37:38 24 4
gpt4 key购买 nike

Specs2 未在其 URL 中定义 SBT 版本: https://oss.sonatype.org/content/repositories/releases/org/specs2/specs2_2.9.2/1.12.3/

这会导致 SBT 在尝试解决问题时出现问题...

[warn] ==== sonatype-snapshots: tried
[warn] https://oss.sonatype.org/content/repositories/snapshots/org/specs2/specs2_2.9.2_0.12/1.12.3/specs2-1.12.3.pom
[warn] ==== sonatype-releases: tried
[warn] https://oss.sonatype.org/content/repositories/releases/org/specs2/specs2_2.9.2_0.12/1.12.3/specs2-1.12.3.pom

如何让 SBT 解析正确的 URL?

最佳答案

specs2 不是 sbt 插件,而是 a Scala library for writing executable software specifications .

sbt 项目有两个级别。您自己的项目(现在将其称为“应用程序”)和构建项目定义本身(将其称为“构建”)。

库依赖项

当应用程序在编译或测试期间使用其他库时,它们称为库依赖项(或简称“deps”)。这些依赖项在 build.sbt (或 *.sbtproject/*.scala)中声明,如下所示:

libraryDependencies += "org.specs2" %% "specs2" % "2.2" % "test"

通过说 %%,使用 sbt 发布的工件会自动在 Maven 上附加 Scala 二进制版本后缀,例如 _2.10。这是因为(与 Java 不同)并非所有 Scala 版本都彼此二进制兼容。 Scala 2.9.1 和 2.9.2 不兼容,因此它们都有不同的后缀 _2.9.1_2.9.2,但 Scala 2.10.x 在系列,因此它们被赋予 _2.10

不幸的是,Scala 版本需要不同版本的 Specs2,您可能需要执行类似以下操作:

libraryDependencies <+= scalaVersion({
case "2.9.2" => "org.specs2" %% "specs2" % "1.12.3" % "test"
case x if x startsWith "2.10" => "org.specs2" %% "specs2" % "2.2" % "test"
})

更多详情请查看Getting Started指南。

sbt 插件

构建可以依赖一些特殊类型的库来扩展其功能,它们是 sbt 插件。这些在 project/plugins.sbt (或 project/*.sbt)中声明如下:

addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.2.5")

由于 sbt 插件依赖于 sbt 版本和构建使用的 Scala 版本,因此这两个信息都以某种方式编码到已发布的工件路径中。在 Ivy 上,它们表示为文件夹名称,但在 Maven 上,它们表示为后缀:

关于scala - 添加未在其 URL 中指定 SBT 版本的 SBT 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16186993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com