在sbt libraryDependencies中定义scalatest时,为什么每个人都使用" test"组态?

时间:2017-08-30 06:46:55

标签: scala sbt scalatest

初学者试图学习Scala并在这里学习。此外,Maven经验非常少。所以,可能是一个愚蠢的问题。

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

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

这遵循以下格式:

libraryDependencies += groupID % artifactID % version % configuration

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

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

1 个答案:

答案 0 :(得分: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我们的构建配置取决于依赖项的 api 配置

     

noexternaljar-> homemade-impl :在这里我们告诉Ivy我们的 noexternaljar 配置取决于自制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只会打开   测试类路径,主要来源不需要它。这是   通常是库的良好实践,因为您的用户没有   通常需要您的测试依赖项来使用您的库。