【问题标题】:Scala Play framework dependency in clean sbt project干净的 sbt 项目中的 Scala Play 框架依赖项
【发布时间】:2015-01-19 09:26:56
【问题描述】:

我想为我的游戏项目创建一个“utils”依赖项,但我似乎找不到在不创建游戏项目的情况下导入游戏框架本身的方法。是否有我可以放入我的 sbt 构建文件的 maven/ivy 依赖项?

基本上我需要能够import play.api.mvc._ 处理一个独立的 sbt 项目。

【问题讨论】:

  • playframework.com/documentation/2.2.x/Build 我不确定你是否需要这个,但看看这个
  • @DoomProg 这并不是我真正想要的。我正在寻找依赖项,所以我可以在一个干净的 sbt 项目中导入 play.api._ 等,而不是让它成为一个 play 项目。
  • 所以这行不通? libraryDependencies ++= Seq("com.typesafe.play" %% "play" % "2.2.2")
  • @Wiz 你能举个例子说明你正在尝试做什么(例如你想使用的一些 api)吗?
  • @Salem 我基本上想将自定义操作包装器抽象为依赖项。所以我需要导入play.api.mvc._

标签: scala playframework sbt


【解决方案1】:

您应该能够将 Play 用作任何其他 jar 依赖项。使用 Play 某些部分的示例项目(您应该更改 Play 和 Scala 版本以满足您的需求):

$ tree .
├── build.sbt
└── hello.scala

build.sbt 文件:

name := "hello"

version := "1.0"

scalaVersion := "2.10.4"

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

libraryDependencies ++= Seq(
    "com.typesafe.play" %% "play" % "2.3.4",
    "com.typesafe.play" %% "play-test" % "2.3.4"
)

还有hello.scala

import play.api._
import play.api.mvc._
import play.api.test._
import play.api.test.Helpers._

class TestController extends Controller {
    def index = TODO
}

object Hello {
    def main(args: Array[String]) = {
        Logger.error("Using Play logger")
        val fr: FakeRequest[String] = new FakeRequest(
            "GET", "/",
            FakeHeaders(Seq.empty), ""
        )
        val ctrl = new TestController
        // Prints the response body
        println(contentAsString(call(ctrl.index, fr)))
        println("Done")
    }
}

这应该给你这样的东西:

$ sbt run
(...)
14:00:12.335 [run-main-0] ERROR application - Using Play logger
<!DOCTYPE html>
<html>
    (...)
    <body>
        <h1>TODO</h1>

        <p id="detail">
            Action not implemented yet.
        </p>

    </body>
</html>
Done

【讨论】:

  • 完美。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2014-08-23
  • 2014-04-08
  • 2012-11-17
  • 1970-01-01
  • 2013-05-28
  • 2019-12-07
  • 2013-04-13
  • 1970-01-01
相关资源
最近更新 更多