2015-04-19 2 views
4

J'ai un projet client-serveur à module unique avec un projet principal pour chacun.Comment configurer sbt-native-packager dans un projet de module unique avec plusieurs réseaux

J'essaie d'utiliser sbt-native-packager pour générer le script de démarrage pour les deux.

projet/P.scala

object Tactic extends Build { 

    lazy val root = 
    (project in file(".")). 
    configs(Client, Server) 
    .settings(inConfig(Client)(Defaults.configTasks) : _*) 
    .settings(inConfig(Server)(Defaults.configTasks) : _*) 

    lazy val Client = config("client") extend Compile 
    lazy val Server = config("server") extend Compile 

} 

build.sbt

mainClass in Client := Some("myProject.Client") 

mainClass in Server := Some("myProject.Server") 

enablePlugins(JavaAppPackaging) 

Quand je lance client:stage le répertoire target/universal/stage/lib est créé avec tous les pots nécessaires, mais le répertoire bin est manquant . Qu'est-ce que je fais mal?

Question subsidiaire: quelle est la clé pour définir le nom du script de démarrage?

Répondre

2

Je vous recommande de configurer votre projet comme une construction multi-module, au lieu de créer et d'utiliser de nouvelles configurations. J'ai essayé votre itinéraire de configuration multiple et il devient très poilu très rapidement.

Par exemple (j'ai créé un projet shared pour quoi que ce soit partagé entre client & server):

def commonSettings(module: String) = Seq[Setting[_]](
    organization := "org.tactic", 
      name := s"tactic-$module", 
     version := "1.0-SNAPSHOT", 
    scalaVersion := "2.11.6" 
) 

lazy val root = (project in file(".") 
    settings(commonSettings("root")) 
    dependsOn (shared, client, server) 
    aggregate (shared, client, server) 
) 

val shared = (project 
    settings(commonSettings("shared")) 
) 

val client = (project 
    settings(commonSettings("client")) 
    enablePlugins JavaAppPackaging 
    dependsOn shared 
) 

val server = (project 
    settings(commonSettings("server")) 
    enablePlugins JavaAppPackaging 
    dependsOn shared 
) 

Remarque Je permettant sbt-native-packager « s JavaAppPackaging dans le client et server. Puis, exécutez stage.


En outre, la clé pour le nom du script de départ est executableScriptName.

+0

Parfait! Je suis vraiment débutant, donc ma solution était naïve et probablement incongrue. Merci beaucoup – lorilan