我可以在我的项目中同时使用它们吗?
以前我只有对象扩展App
特征,但自从我开始使用Microkernel
后,我需要扩展Bootable
特征的类。
让我们说我有这样的事情:
lazy val backend = (project in file("backend"))
.enablePlugins(AkkaAppPackaging)
.enablePlugins(UniversalPlugin)
.settings(
name := "backend",
mainClass in Compile := Some("backend.Backend"),
libraryDependencies ++= Dependencies.backend,
javaOptions in run ++= Seq("-Djava.library.path=./sigar"),
fork in run := true)
.dependsOn(api)
.aggregate(api)
和Backend这样的课程:
class Backend extends Bootable {
val system = ActorSystem("mobile-cluster")
def startup() = {
FactorialBackend startOn system
}
def shutdown() = {
system.shutdown()
}
}
我无法使用sbt run
启动应用程序(有关于缺少静态主方法的错误),但它适用于Microkernel,当我运行sbt stage
并且下次使用生成的脚本启动应用程序时,它可以正常工作。
当我使用这样的东西时:
object Backend extends App {
val system = ActorSystem("application")
FactorialBackend startOn system
}
我可以使用sbt "project backend" "run"
启动应用,但微内核不再工作了。
我该怎么办? 我是否应该使用单独的文件来启动使用Microkernel和sbt或单独构建配置的应用程序?
我需要使用Microkernel生成应用程序的生产版本,我还想在开发期间使用sbt运行和调试我的应用程序。
我尝试使用扩展App和Bootable特性的相同类或对象,或者配置sbt.build为Microkernel和sbt run
分别配置,但它没有帮助。
答案 0 :(得分:0)
一种解决方案是创建另一个模块,将可引导类放入其中并添加其他构建配置:
lazy val backend = (project in file("backend"))
.settings(
name := "backend",
libraryDependencies ++= Dependencies.backend,
javaOptions in run ++= Seq("-Djava.library.path=./sigar"),
// this enables custom javaOptions
fork in run := true)
.dependsOn(api)
.aggregate(api)
lazy val boot = (project in file("boot"))
.enablePlugins(AkkaAppPackaging)
.enablePlugins(UniversalPlugin)
.settings(
name := "boot",
mainClass in Compile := Some("com.example.Boot"),
libraryDependencies ++= Dependencies.backend,
// this enables custom javaOptions
fork in run := true)
.dependsOn(backend)
.aggregate(api, backend)
现在我可以运行
sbt "project backend" "run"
和
sbt "project boot" "stage"
答案 1 :(得分:0)
我认为你不需要2个模块。
您可以使用以下命令运行微内核
sbt“project backend”“run-main akka.kernel.Main Backend”
答案 2 :(得分:0)
通过sbt console执行这些说明:
runMain akka.kernel.Main Backend