加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

playframework – 如何创建一个Play 2.2 Scala应用程序作为SBT子

发布时间:2020-12-16 09:44:13 所属栏目:安全 来源:网络整理
导读:我正在尝试创建一个Scala应用程序,包括一个图书馆项目(我们称之为常见的),一个Thrift服务器项目(让我们称之为该服务器)和一个Play Web应用程序项目(以下称为Web)。所有这三个都是用Scala写的,用sbt编写。 我的项目结构如下所示: myproject/-common/ ...-
我正在尝试创建一个Scala应用程序,包括一个图书馆项目(我们称之为常见的),一个Thrift服务器项目(让我们称之为该服务器)和一个Play Web应用程序项目(以下称为Web)。所有这三个都是用Scala写的,用sbt编写。

我的项目结构如下所示:

myproject/
-common/
  ...
-server/
  ...
-web/
  -app/
  -conf/
  ...
-project/
  -Build.scala
  -build.properties
-build.sbt

我的build.sbt文件(简化了一下)如下所示:

import play.Project._

name := "myproject"

version := "1.0-SNAPSHOT"

lazy val common = project

lazy val web = project
    .settings(playScalaSettings: _*)
    .dependsOn(common)

lazy val server = project
    .dependsOn(common)

lazy val root = project.in(file("."))
    .aggregate(common,web,server)

这个问题是,根项目不是一个Play项目,所以播放命令不起作用(它出错了

java.lang.RuntimeException: */*:playRunHooks is undefined.
at scala.sys.package$.error(package.scala:27)

我可以通过使根项目看起来像一个Play项目,如果我在SBT文件中的版本行之后插入playScalaSettings,但是我有另一个问题:播放运行命令尝试运行根项目而不是网络子项目显然,当运行在web子目录中时,play run命令不起作用,因为没有SBT文件来描述项目及其依赖关系。

我正在寻找一个解决方案,允许我保留这个项目结构(意味着Play项目是我应用程序中的许多子项目之一),同时保留所有的Play框架热点,如代码更改时的热更新(甚至依赖库中的代码像常见)。

我以为我通过运行播放找到解决方案来获取交互式控制台,然后

project web
 run

这是有效的,但它在命令行上不起作用。由于某种原因播放网络/运行运行根级别运行命令,如上所述,它不起作用,因为根应用程序不是Play应用程序。

注意:在07.07的Play 2.0的背景下,有一个类似的问题被问到,但是答案并不令人满意,我也不相信它在Play 2.2中仍然是正确的。

解决方法

如果

play (entering shell)
 project web
 run

工作,那么你可以使它从命令行工作:

play "project web" "run"

您可以在命令行中执行任何可以在shell中执行的操作。

我有相同的项目结构,这样做对我来说很好。

顺便说一下,我不认为热的重新加载的东西与Play有关。它是由Play使用的SBT提供的增量编译。播放命令只是一些黑客SBT发射器我想。

以下命令对我有用:

sbt "project web" "run"

它开始播放项目热重新加载。

我想你甚至可以使用

sbt "project web" "~run"

每次更改源文件时,都会尝试重新编译,而不是等待浏览器刷新,并且会赢得一些时间。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读