2015-01-07 10 views
6

Ho bisogno di impacchettare le classi di test, le risorse e anche di verificare le dipendenze con l'assembly sbt.Come includere le classi di test e le dipendenze di test nell'assembly di sbt

Questa domanda sbt-assembly : including test classes non ha aiutato - test: l'assembly non ha ancora generato un jar con nessuna delle classi desiderate incluse.

Si noti che la mia configurazione attualmente appare così:

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) 
    } 
) 

E si tratta del sottoprogetto 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" 
    ) 

anche se aggiungo (Test, assembly) nelle impostazioni sopra, ho solo un jar (il cui nome non è quello specificato, ma il nome completo, con la versione) che non contiene classi di test o depende ncies, non importa se invoco sbt foo-cucumber/test:assembly o sbt foo-cucumber/assembly

Come faccio a ottenere un vaso che ha tutto in esso (compilare e classi di test e le dipendenze)

risposta

2

La chiave per il progetto multi-modulo è quello di definire le impostazioni in questo modo:

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

e poi non ha alcun in (Test, assembly) nelle impostazioni

+0

ho provato in questo modo, però, non riesco ancora a trovare le classi di test compilati in th e file jar. Ti dispiace postare il tuo build.sbt modificato? Grazie – flyingfromchina

+2

devi eseguire 'test: assembly'. Non c'è altra modifica al file – Bozho