如何在具有多个电源的单个模块项目中设置 sbt-native-packager [英] How to setup sbt-native-packager in a single module project with multiple mains
问题描述
我有一个单模块客户端-服务器项目,每个项目都有一个主模块.
I have a single module client-server project with a main for each.
我正在尝试使用 sbt-native-packager
为两者生成启动脚本.
I'm trying to use sbt-native-packager
to generate start-script for both.
项目/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)
当我运行 client:stage
目录 target/universal/stage/lib
与所有必需的 jars 创建,但 bin
目录不见了.我做错了什么?
When I run client:stage
the directory target/universal/stage/lib
is created with all the necessary jars but the bin
directory is missing. What am I doing wrong?
附属问题:设置起始脚本名称的关键是什么?
Subsidiary question: what is the key to set the starting script name?
推荐答案
我建议将您的项目设置为多模块构建,而不是创建和使用新配置.我试过你的多配置路线,很快就变得毛茸茸的.
I would recommend setting up your project as a multi-module build, instead of creating and using new configurations. I tried your multiple configuration route and it gets hairy very quickly.
例如(我为 client
和 server
之间共享的任何内容创建了一个 shared
项目):
For example (I created a shared
project for anything shared between 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
)
注意我在 client
和 server
中启用了 sbt-native-packager
的 JavaAppPackaging
.
Note I'm enabling sbt-native-packager
's JavaAppPackaging
in the client
and server
.
然后运行stage
.
另外,启动脚本名称的关键是executableScriptName
.
Also, the key for the starting script name is executableScriptName
.
这篇关于如何在具有多个电源的单个模块项目中设置 sbt-native-packager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!