具有2个不同构建的多项目

时间:2017-01-07 03:57:25

标签: playframework sbt akka

我需要开发以下内容:

  1. playframework app
  2. akka http
  3. 共享库
  4. play和akka app都需要#3共享库。

    是否可以在单个sbt项目中创建2个不同的版本?

    因此,当我运行游戏构建时,它将不包含akka,当我运行akka构建时,它将不包含游戏代码。

    我只是想避免打开和管理两个不同的项目。

1 个答案:

答案 0 :(得分:1)

我使用具有3个子项目的多项目结构:

Root build.sbt

lazy val myLib = (project in file("my-lib"))

lazy val playJava = (project in file("play-java"))
  .enablePlugins(PlayJava)
  .dependsOn(myLib)

lazy val runnableApp = (project in file("runnable-app"))
  .dependsOn(myLib)

哪个myLib库应该在播放应用程序playJava和简单的java项目runnableApp之间共享

1。播放build.sbt

name := """play-java"""

version := "1.0-SNAPSHOT"

scalaVersion := "2.11.7"

2. :runnableApp build.sbt

name := """runnable-app"""

version := "1.0"

scalaVersion := "2.11.6"

mainClass in assembly := Some("com.example.Hello")

assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)

libraryDependencies ++= Seq(
  "junit"             % "junit"           % "4.12"  % "test",
  "com.novocode"      % "junit-interface" % "0.11"  % "test"
)

3。 myLib build.sbt

name := """my-lib"""

version := "1.0"

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
  "junit"             % "junit"           % "4.12"  % "test",
  "com.novocode"      % "junit-interface" % "0.11"  % "test"
)

在sbt会话中,我们可以选择项目。例如:

$ project playJava
[info] Set current project to play-java ...

现在我们可以在当前子项目上运行任务。