SBT多项目如何共享同一个actor系统
How SBT multi-project share the same actor system
我正在研究 SBT 多项目解决方案。
现在我有:
- 顶级项目测试环境
- 子项目test-core
- 子项目test-proj1
- 子项目test-proj2
这样的层次结构:
测试环境
- 源码
- 项目
- build.sbt
- 测试核心
- 源码
- build.sbt
- 测试项目1
- 源码
- build.sbt
- 测试项目2
- 源码
- build.sbt
我想把一些像akka ActorSystem这样的主要功能和对象放在test-core中,可以在test-proj1和test-proj2中引用。
这可以通过在 test-env 的 build.sbt 中编写项目依赖来完成,如下所示:
val env = (project in file("."))
val core = (project in file("test-core"))
.aggregate(proj1,proj2)
.settings(
run / aggregate := true
)
lazy val coreRef = LocalProject("core")
lazy val proj1 = (project in file("test-proj1")).dependsOn(coreRef)
lazy val proj2 = (project in file("test-proj2")).dependsOn(coreRef)
但问题是:
当我通过 test-proj1 和 test-proj2.They 引用在 test-core 中定义的 ActorSystem 时,它们不是同一个 ActorSystem.
而且我不想将它们全部放在一个项目中并将 proj1 和 proj2 作为一个包。
那么我如何通过这个项目层次结构引用同一个 ActorSystem 呢?
两个子项目有两个主要功能。
两个主要功能意味着两个应用程序。
两个应用程序意味着两个过程。
默认情况下,两个进程意味着不共享任何内容。
所以上面说的子项目层次结构无法解决"the same ActorSystem instance"问题。
我正在研究 SBT 多项目解决方案。
现在我有:
- 顶级项目测试环境
- 子项目test-core
- 子项目test-proj1
- 子项目test-proj2
这样的层次结构:
测试环境
- 源码
- 项目
- build.sbt
- 测试核心
- 源码
- build.sbt
- 测试项目1
- 源码
- build.sbt
- 测试项目2
- 源码
- build.sbt
我想把一些像akka ActorSystem这样的主要功能和对象放在test-core中,可以在test-proj1和test-proj2中引用。 这可以通过在 test-env 的 build.sbt 中编写项目依赖来完成,如下所示:
val env = (project in file("."))
val core = (project in file("test-core"))
.aggregate(proj1,proj2)
.settings(
run / aggregate := true
)
lazy val coreRef = LocalProject("core")
lazy val proj1 = (project in file("test-proj1")).dependsOn(coreRef)
lazy val proj2 = (project in file("test-proj2")).dependsOn(coreRef)
但问题是:
当我通过 test-proj1 和 test-proj2.They 引用在 test-core 中定义的 ActorSystem 时,它们不是同一个 ActorSystem.
而且我不想将它们全部放在一个项目中并将 proj1 和 proj2 作为一个包。
那么我如何通过这个项目层次结构引用同一个 ActorSystem 呢?
两个子项目有两个主要功能。
两个主要功能意味着两个应用程序。
两个应用程序意味着两个过程。
默认情况下,两个进程意味着不共享任何内容。
所以上面说的子项目层次结构无法解决"the same ActorSystem instance"问题。