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