2017-01-07 118 views
1

我有以下我需要開發:多項目建立

  1. playframework應用
  2. 阿卡HTTP
  3. 共享庫

無論是播放和阿卡應用程序所需要的#3共享庫。

是否有可能在一個單一的sbt項目中創建2個不同的版本?

所以當我運行遊戲構建時,它不會包含akka,而當我運行akka構建時,它將不包含遊戲代碼。

我只是想避免打開和管理2個不同的項目。

回答

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庫,應該播放應用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" 
) 

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 ... 

現在我們可以在當前的子項目上運行任務。