я использую эту многоступенчатую структуру проекта с 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. Play 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 ...
Теперь мы можем запускать задачу по текущему подпроекту.