【问题标题】:Multi project with 2 different builds具有 2 个不同构建的多项目
【发布时间】:2017-05-21 22:05:41
【问题描述】:
我有以下需要开发:
- playframework 应用程序
- 阿卡 http
- 共享库
play 和 akka 应用都需要 #3 共享库。
是否可以在一个 sbt 项目中创建 2 个不同的构建?
所以当我运行 play build 时,它不会包含 akka,而当我运行 akka build 时,它不会包含 play 代码。
我只是想避免打开和管理 2 个不同的项目。
【问题讨论】:
标签:
playframework
sbt
akka
【解决方案1】:
我使用带有 3 个子项目的多项目结构:
根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 库,应该在 play 应用程序 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 ...
现在我们可以在当前子项目上运行任务了。