这里有两个选项:
如果您分别设置 akka 项目和 scala-play 项目,则需要设置第三个项目(可能使用模板“min-scala”),并将该项目发布到存储库中。在这个新项目中,您需要设置发布位置,并明确定义项目名称、组织和版本号。你可能会喜欢这个
name := """my-database-lib"""
organization := "org.my.project"
version := "1.0-SNAPSHOT"
scalaVersion := "2.11.6"
publishTo := Some("Nexus" at "http://nexus.myrepo.com:8081/nexus/content/repositories/play-snapshot/")
然后你可以将这一行添加到你的 play 和 akka 项目中来引用它:
libraryDependencies += "org.my.project" %% "my-database-lib" % "1.0-SNAPSHOT"
您需要在共享项目上运行activator publish 才能将库上传到存储库。如果您没有共享存储库,您可以跳过publishTo 配置并使用activator publishLocal 仅在您的计算机上发布您的共享库。
第二种解决方案是将所有三个项目定义为一个构建,方法是将其他项目放入一个项目的模块文件夹中。您可以像这样在一个 sbt 中将多个项目定义为模块:
lazy val playProject = (project in file(".")).enablePlugins(PlayJava)
.dependsOn(databaseLib).aggregate(databaseLib)
lazy val akkaProject = (project in file("modules/akka"))
.dependsOn(databaseLib)..aggregate(databaseLib)
lazy val databaseLib = (project in file("modules/database"))
然后可以使用activator projects列出所有项目,使用activator "project akkaProject"切换根项目。
第二种解决方案的好处是代码会在共享项目中发生更改时自动重新编译,但您不能将代码拆分为多个存储库并单独维护它们。