Scala 库可用于编译和测试配置

标签 scala sbt

我有一个库,希望在 Scala 的单元测试和代码本身中公开。

在 sbt 中,我使用配置 "test" 添加了我的库依赖项,然后它可用于测试,但我不能在代码中使用它。如果我保留配置或添加 "compile",则无法在单元测试中导入它。

libraryDependencies ++= Seq(
  "org.scalacheck" %% "scalacheck" % "1.14.0",
  "org.scalatest" %% "scalatest" % "3.0.6" % "test",
  "org.scalactic" %% "scalactic" % "3.0.6" % "test")

主要问题是我公开了一个我想在其他代码中到处使用的抽象类:abstract class UnitSpec extends FlatSpec with Matchers with ScalaCHeckDrivenPropertyChecks 并且还在库的测试中使用.如果我将 "test" 添加到 ScalaCheck,它就无法在库的主代码中找到它。如果我保持原样,它不能来自 org.scalatestplus.scalacheck.ScalaCheckDrivenPropertyChecks。这曾经没问题,并且可以与 3.0.5 和 GeneratorDrivenProperyChecks 一起正常工作,但已被弃用。

有没有办法实现我想要的?我尝试了 "test->compile" 但这也没有达到我希望的效果...

最佳答案

您可以组合配置。为了在编译和测试中都有一个库,您只需添加机器人配置。

// wrong: libraryDependencies += "<organization>" %% "<module>"  % "<version>" % "compile->compile" % "test->compile"

语法大概意思是:项目配置 dependsOn(->) libraryDependency的配置

更新

您还可以使用不同的配置两次添加依赖项。

libraryDependencies += "<organization>" %% "<module>"  % "<version>",
libraryDependencies += "<organization>" %% "<module>"  % "<version>" % "test"

更新 2

我认为第一个示例中的语法不是我想要提供的。

libraryDependencies += "<organization>" %% "<module>"  % "<version>" % "compile->compile;test->compile"

至少那是我在 libraryDependencies 中使用的。

关于Scala 库可用于编译和测试配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55047355/

相关文章:

java - 在 Eclipse 中手动安装 scala-maven-plugin

regex - 如何在不知道正则表达式匹配的情况下使用正则表达式提取子字符串(组)?

xml - 在 Scala 中,如何使用转换器/重写规则将递增 ID 放入 XML 元素中

scala - 如何在scala sbt中获取资源文件夹下的加载文件

intellij-idea - IDEA无法重新导入sbt项目

scala - sbt 添加设置的惯用方式

scala - 为什么 akka Actor 没有 postStart 方法?

java - scala -> java getField().get()

playframework - 如何重命名sbt中的默认项目

scala - 如何为 sbt 原生打包器的 DockerPlugin 设置基础镜像?