【发布时间】:2015-05-14 18:27:36
【问题描述】:
在一个 sbt 项目中,用于测试的标准源位置是:
src/test/scala/ 中的 Scala 源代码
src/test/java/中的Java源代码
我运行sbt package时没有打包那些测试文件
我想将打包好的jar复制到远程机器上运行测试。
有没有办法让sbt在包中包含测试资源?
【问题讨论】:
在一个 sbt 项目中,用于测试的标准源位置是:
src/test/scala/ 中的 Scala 源代码
src/test/java/中的Java源代码
我运行sbt package时没有打包那些测试文件
我想将打包好的jar复制到远程机器上运行测试。
有没有办法让sbt在包中包含测试资源?
【问题讨论】:
只需运行sbt test:package。这将生成一个与主 jar 不同的 jar,因此不要忘记复制两者(以及测试依赖项);如果您只想管理一个 jar,可以使用 sbt-assembly 并运行 sbt test:assembly。
【讨论】:
Test to include: % "compile->test" 在您声明 test 的行中的 sbt 中。大概是这样的:
libraryDependencies += "org.scala-tools.testing" %% "scalacheck" % "1.9" % "test"
会是这样的:
libraryDependencies += "org.scala-tools.testing" %% "scalacheck" % "1.9" % "compile->test"
我认为你需要“程序集”而不是包来包含测试库,但我不确定这一点。
【讨论】:
这是显式运行 test:package 的另一种替代方法。 在 sbt 中,对于项目定义,您更新 packageBin 设置,如下所示。
项目 .settings(编译中的fullClasspath:=(测试中的fullClasspath).value) .settings(Compile 中的packageBin := (Test 中的packageBin).value)
完成后,将创建 project-tests.jar。
【讨论】: