sbt 多个原生包
sbt multiple native packages
所以使用 Scala Play Framework。我只有一个代码库,但需要以两种方式启动它。一种方法是将 Play Netty 作为主要 class 和 运行 网络服务器启动。第二种方式将 运行 我自己的主要 class 并做不同的事情。
如果我玩 dist (https://www.playframework.com/documentation/2.3.x/ProductionDist)
它最终使用了sbt-native插件,并制作了一个新的zip。在该 zip 文件中是一个脚本,它使用 Netty 的 mainclass 调用 java。这最终来自
mainClass in (Compile, run) := Some("play.core.server.NettyServer"),
在 PlaySettings.scala 内。
我想保留所有这些,但将第二个工件添加到 dist.. 中,唯一不同的是不同的主 class。
我开始尝试制作子项目..但不确定这是我真正想要的。类似于:
lazy val root = Project(
id = "root",
base = file("."),
librar
aggregate = Seq(web, backend)
).dependsOn(web, worker)
lazy val web = Project(
id = "web",
base = file("."),
settings = packageArchetype.java_server ++ Seq(
name := "web",
mainClass in Compile := Some("play.core.server.NettyServer")
)
).enablePlugins(PlayScala)
lazy val backend= Project(
id = "backend",
base = file("."),
settings = packageArchetype.java_server ++ Seq(
name := "backend",
mainClass in Compile := Some("com.foobar.BackendMain")
)
)
但我最终还是得到了一件神器。还有哪些其他选择?
我可以破解 bash-template 并添加 mainClass 作为参数并将其传递给启动脚本...
您可以使用一个主 class 作为默认值并通过
-main you.another.class.Name
bash 脚本的参数 运行 另一个主要 class。
所以使用 Scala Play Framework。我只有一个代码库,但需要以两种方式启动它。一种方法是将 Play Netty 作为主要 class 和 运行 网络服务器启动。第二种方式将 运行 我自己的主要 class 并做不同的事情。
如果我玩 dist (https://www.playframework.com/documentation/2.3.x/ProductionDist)
它最终使用了sbt-native插件,并制作了一个新的zip。在该 zip 文件中是一个脚本,它使用 Netty 的 mainclass 调用 java。这最终来自
mainClass in (Compile, run) := Some("play.core.server.NettyServer"),
在 PlaySettings.scala 内。
我想保留所有这些,但将第二个工件添加到 dist.. 中,唯一不同的是不同的主 class。
我开始尝试制作子项目..但不确定这是我真正想要的。类似于:
lazy val root = Project(
id = "root",
base = file("."),
librar
aggregate = Seq(web, backend)
).dependsOn(web, worker)
lazy val web = Project(
id = "web",
base = file("."),
settings = packageArchetype.java_server ++ Seq(
name := "web",
mainClass in Compile := Some("play.core.server.NettyServer")
)
).enablePlugins(PlayScala)
lazy val backend= Project(
id = "backend",
base = file("."),
settings = packageArchetype.java_server ++ Seq(
name := "backend",
mainClass in Compile := Some("com.foobar.BackendMain")
)
)
但我最终还是得到了一件神器。还有哪些其他选择?
我可以破解 bash-template 并添加 mainClass 作为参数并将其传递给启动脚本...
您可以使用一个主 class 作为默认值并通过
-main you.another.class.Name
bash 脚本的参数 运行 另一个主要 class。