将播放应用程序作为子项目嵌入到sbt中

时间:2015-10-16 15:36:51

标签: scala playframework sbt playframework-2.3

我想将Playframework作为子项目嵌入到sbt中,并且能够使其依赖于其他子项目。 原因是其他子项目是在各种容器中运行的库,一个是另一个可能是火花的。

我能够通过dependsOn指令使子项目相互依赖,但这对包含play webapp的子项目不起作用。

我现在能做的最好的事情就是让Play webapp依赖于本地发布的工件而运行,但这并不令人满意。因为我希望子项目编写者意识到更改会破坏webapp。

如果我删除web子项目中的.enablePlugins(play.PlayScala)依赖关系已解决且所有内容编译正常但我无法在webapp子项目中使用play sbt插件操作,例如run。当我尝试sbt时,找不到主要课程。

简而言之,我想从根项目中编译所有子项目,进入web子项目以编译此级别的聚合项目,并在此子项目上使用run,universal:packageZipTarball操作。

我正在使用游戏2.3.10和sbt 0.13.8

感谢您的帮助, Yohann。

这是sbt项目根目录下的Build.scala文件。

import sbt._
import Keys._

object RootBuild extends Build {
    lazy val root = Project(id = "root", base = file("."))
                                        .aggregate(sub1, sub2, web)
    lazy val sub1 = Project(id = "sub1", base = file("sub1"))

    lazy val sub2 = Project(id = "sub2", base = file("sub2")).dependsOn(sub1)

    lazy val web = Project(id = "web", base = file("web"))
                                .aggregate(sub1, sub2)
                                .dependsOn(sub1, sub2)
                                .enablePlugins(play.PlayScala)

    resolvers += "Typesafe repo" at "http://repo.typesafe.com/typesafe/releases/"
}

然后是web文件夹中的build.sbt文件。

name := "web"

version := "0.1-SNAPSHOT"

scalaVersion := "2.10.5"

libraryDependencies ++= Seq(
    ws,
    "com.chuusai" %% "shapeless" % "2.2.5",
    compilerPlugin("org.scalamacros" % "paradise" % "2.0.1" cross CrossVersion.full)
)

0 个答案:

没有答案