如何在具有多个电源的单个模块项目中设置 sbt-native-packager [英] How to setup sbt-native-packager in a single module project with multiple mains

查看:48
本文介绍了如何在具有多个电源的单个模块项目中设置 sbt-native-packager的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个单模块客户端-服务器项目,每个项目都有一个主模块.

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.

例如(我为 clientserver 之间共享的任何内容创建了一个 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
)

注意我在 clientserver 中启用了 sbt-native-packagerJavaAppPackaging.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆