【问题标题】:When defining scalatest within sbt libraryDependencies, why does everyone use the "test" configuration?在 sbt libraryDependencies 中定义 scalatest 时,为什么每个人都使用“测试”配置?
【发布时间】:2018-02-07 18:35:18
【问题描述】:

初学者在这里尝试学习 Scala 和 sbt。此外,很少有 Maven 经验。所以,可能是一个愚蠢的问题。

在 build.sbt 中定义 libraryDependencies 时,我经常看到如下示例:

libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.6" % "test"

以下格式:

libraryDependencies += groupID % artifactID % version % configuration

在这种情况下,为什么我们将test 用于configuration 字段?除了从网上复制/粘贴示例之外,我怎么知道?

任何见解都可以帮助我更好地理解如何在我的项目中指定库依赖项。此外,任何我可以用来深入研究该主题的材料的参考都将不胜感激。

【问题讨论】:

    标签: scala sbt scalatest


    【解决方案1】:

    您可以找到以下有用的链接:

    http://www.scala-sbt.org/0.13/docs/Library-Management.html#ivy-configurations

    您可以通过选择以下一项或多项将依赖项放入配置中 将其配置映射到您项目的一个或多个 配置。最常见的情况是让您的 配置 A 使用依赖项的配置 B. 的映射 这看起来像“A->B”。要将此映射应用于依赖项,请将其添加 到你的依赖定义的结尾:

    libraryDependencies += "org.scalatest" %% "scalatest" % "2.1.3" % “测试->编译”

    这表示您项目的“测试”配置使用了 ScalaTest 的 “编译”配置。大多数发布到 Maven 存储库的项目将使用“编译”配置。

    没有映射(没有“->”)的配置被映射到“默认”或 “编译”。 -> 仅在映射到不同的 配置比那些。

    https://ant.apache.org/ivy/history/2.3.0/tutorial/conf.html

    build->api :这里我们告诉 Ivy,我们的 build 配置依赖于依赖项的 api 配置

    noexternaljar->homemade-impl :这里我们告诉 Ivy 我们的 noexternaljar 配置依赖于 homemade-impl 配置 的依赖。

    withexternaljar->cc-impl :这里我们告诉 Ivy,我们的 withexternaljar 配置依赖于 cc-impl 配置 依赖

    http://www.scala-sbt.org/0.13/docs/Testing.html

    lazy val scalacheck = "org.scalacheck" %% "scalacheck" % "1.13.4"

    libraryDependencies += scalacheck % 测试

    Test 是配置,意味着 ScalaCheck 只会开启 测试类路径,主要来源不需要它。这是 通常是图书馆的好习惯,因为您的用户不 通常需要您的测试依赖项才能使用您的库。

    【讨论】:

      猜你喜欢
      • 2013-03-02
      • 2020-03-26
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 2012-05-05
      相关资源
      最近更新 更多