Scala 在sbt中包含来自测试工件的依赖项

Scala 在sbt中包含来自测试工件的依赖项,scala,sbt,Scala,Sbt,我正在编写一个模块utils,它将用于我的应用程序myapp。utils中的某些类仅用于测试 sbt包含以下定义: utils中的build.sbt: name := "utils" organization := "com.mycompany" publishArtifact in Test := true libraryDependencies ++= Seq( "com.exteranl1" %% "external1" % "1.0.0" ) myapp中的build

我正在编写一个模块
utils
,它将用于我的应用程序
myapp
utils
中的某些类仅用于测试

sbt包含以下定义:

utils
中的
build.sbt

name := "utils"

organization := "com.mycompany"

publishArtifact in Test := true

libraryDependencies ++= Seq(
    "com.exteranl1" %% "external1" % "1.0.0"
  )
myapp
中的
build.sbt

libraryDependencies ++= Seq(
    "com.mycompany" %% "utils" % "1.0.0",
    "com.mycompany" %% "utils" % "1.0.0" % "test" classifier "tests"
)
这对我很有用。 我可以在
myapp
中使用
external1
,在
myapp
的测试中,我可以使用在
utils
的测试中定义的类

我的问题是当我试图添加只在测试中使用的
external2
时,因此我不希望它包含在
编译
工件中(包括
utils
myapp

我试图修改
utils
build.sbt
如下:

libraryDependencies ++= Seq(
    "com.exteranl1" %% "external1" % "1.0.0",
    "com.exteranl2" %% "external2" % "1.0.0" % "test"
  )
但是
external2
myapp
的编译测试中不存在

我的解决方法是将
external2
添加到
myapp
中:

libraryDependencies ++= Seq(
    "com.mycompany" %% "utils" % "1.0.0",
    "com.mycompany" %% "utils" % "1.0.0" % "test" classifier "tests",
    "com.exteranl2" %% "external2" % "1.0.0" % "test"
)
但是这不是很方便,因为我需要在
myapp
中跟踪
utils
测试中使用的所有包

所以我的问题是,,
我是否可以在
utils
中标记
external2
,告诉编译器将其作为依赖项添加到
myapp

由于
external2
仅存在于测试上下文中的utils中,因此使用
utils
的任何东西都不会拾取它,因为它只将
utils
而不是
utils
的测试视为依赖项。如果您使用的是sbt,则可以在
myapp
中使用以下命令显式声明此测试相关性:

dependencies := Seq(utils % "compile->compile;test->test")
如果这些是独立的项目,并且您正在从本地常春藤存储库中提取
utils
,我相信您必须明确声明
external2