8

我需要使用 sbt 程序集打包我的测试类、资源以及测试依赖项。

这个问题sbt-assembly : include test classes没有帮助 - test: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)
    }
  )

这是关于子项目的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"
    )

即使我(Test, assembly)在上面的设置中附加,我也只会得到一个不包含测试类或依赖项的 jar(其名称不是指定的,而是全名,带有版本),无论我调用sbt foo-cucumber/test:assembly还是sbt foo-cucumber/assembly

如何获得一个包含所有内容的 jar(编译和测试类和依赖项)

4

1 回答 1

4

多模块项目的关键是以这种方式设置设置:

.settings(inConfig(Test)(cucumberAssemblySettings): _*)

然后在设置中没有in (Test, assembly)

于 2015-01-08T17:33:25.783 回答