我运行了spark应用程序,并希望将测试类打包到胖罐中.奇怪的是我成功地运行了"sbt assembly",但是当我运行"sbt test:assembly"时失败了.
我试过sbt-assembly:包括测试类,它对我的情况不起作用.
SBT版本:0.13.8
build.sbt:
import sbtassembly.AssemblyPlugin._
name := "assembly-test"
version := "1.0"
scalaVersion := "2.10.5"
libraryDependencies ++= Seq(
("org.apache.spark" % "spark-core_2.10" % "1.3.1" % Provided)
.exclude("org.mortbay.jetty", "servlet-api").
exclude("commons-beanutils", "commons-beanutils-core").
exclude("commons-collections", "commons-collections").
exclude("commons-logging", "commons-logging").
exclude("com.esotericsoftware.minlog", "minlog").exclude("com.codahale.metrics", "metrics-core"),
"org.json4s" % "json4s-jackson_2.10" % "3.2.10" % Provided,
"com.google.inject" % "guice" % "4.0"
)
Project.inConfig(Test)(assemblySettings)
Run Code Online (Sandbox Code Playgroud) 我需要打包我的测试类,资源以及使用sbt程序集测试依赖项.
这个问题sbt-assembly:包括测试类没有帮助 - 测试:程序集仍然没有生成包含任何所需类的jar.
请注意,我的设置目前如下所示:
FooBuild.scala:
lazy val cucumberAssemblySettings = assemblySettings ++ Seq(
mainClass in assembly := Some("cucumber.api.cli.Main"),
jarName in assembly := "cucumber.jar",
mergeStrategy in assembly := {
case "application.conf" => MergeStrategy.concat
case "logback.xml" => MergeStrategy.last
case x => defaultMergeStrategy(x)
}
)
Run Code Online (Sandbox Code Playgroud)
这是关于子项目foo-cucumber
:
lazy val foo_cucumber = Project("foo-cucumber", file("foo-cucumber"))
.settings(defaultSettings: _*)
.settings(cucumberAssemblySettings: _*)
.dependsOn(
foo_test_server % "compile->compile;test->test",
foo_test_utils % "compile->compile;test->test"
)
Run Code Online (Sandbox Code Playgroud)
即使我附加(Test, assembly)
在上面的设置中,我只得到一个jar(其名称不是指定的名称,但是全名,带有版本),不管我是否调用sbt foo-cucumber/test:assembly
或者是否包含测试类或依赖项sbt foo-cucumber/assembly
如何获得包含所有内容的jar(编译和测试类和依赖项)
我遵循sbt-assembly:包括来自https://github.com/sbt/sbt-assembly中描述的配置的测试类,可以正常进行组装
当我加载sbt时,我得到
assembly.sbt:5: error: reference to jarName is ambiguous;
it is imported twice in the same scope by
import sbtassembly.AssemblyKeys._
and import _root_.sbtassembly.AssemblyPlugin.autoImport._
jarName in (Test, assembly) := s"${name.value}-test-${version.value}.jar"
^
Run Code Online (Sandbox Code Playgroud)
因此,我注释了导入行并运行sbt:assembly,但它开始测试,但不生成任何-test- .jar。
有谁知道如何生成包含测试类的jar?谢谢