SBT多项目如何共享同一个演员系统

问题描述 投票:0回答:1

我正在研究SBT多项目解决方案。

我现在有:

  • 顶级项目测试环境
  • 子项目测试核心
  • 子项目test-proj1
  • 子项目test-proj2

像这样的层次结构:

测试ENV

  • SRC
  • 项目
  • build.sbt
  • 测试核 SRC build.sbt
  • 测试proj1 SRC build.sbt
  • 测试proj2 SRC 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引用test-core中定义的ActorSystem时。它们不是相同的ActorSystem。 而且我不想将它们全部放在一个项目中,并将proj1和proj2作为一个包。 那么如何通过这个项目层次结构引用相同的ActorSystem呢?

scala sbt akka projects-and-solutions class-hierarchy
1个回答
2
投票

两个子项目有两个主要功能。 两个主要功能意味着两个应用。 两个申请意味着两个过程。 两个进程意味着默认不共享任何内容

所以上面讨论的子项目层次结构无法解决“相同的ActorSystem实例”问题。

© www.soinside.com 2019 - 2024. All rights reserved.