我需要开发以下内容:
play和akka app都需要#3共享库。
是否可以在单个sbt项目中创建2个不同的版本?
因此,当我运行游戏构建时,它将不包含akka,当我运行akka构建时,它将不包含游戏代码。
我只是想避免打开和管理两个不同的项目。
答案 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 ...
现在我们可以在当前子项目上运行任务。