0

更新:

所以,我试图理解的问题是为什么我不能build.sbt在根文件夹中有一个。即使我lazy val root = ...在根build.sbt文件夹中定义了一个,也找不到主类。

这个reddit链接:

https://www.reddit.com/r/scala/comments/4igc9x/sbt_playframework_no_main_class_detected/

提出问题的解决方案。虽然sbt demo/run确实执行了播放应用程序,但我最终希望sbt run从根项目编译所有项目,然后运行服务器。

任何人都可以在这里帮忙吗?

==================================================== ================

老问题:

我试图了解 build.sbt 是如何工作的,但我不确定发生了什么。我想构建一个游戏项目作为在根 build.sbt 文件下构建的多个项目之一。

我有以下结构(为简洁起见,大多数文件都省略了):

.
|-- build.sbt
|-- project/
|   |-- build.properties
|   |-- plugins.sbt
|   |-- project/
|-- demo/
|   |-- build.sbt
|   |-- app/
|   |-- conf/
|   |    |-- application.conf
|   |    |-- routes
|   |-- public/
|   |-- test/

在根目录build.sbt文件中,我有以下内容。

name := "demo-root"
organization := "com.example"


scalaVersion in ThisBuild := "2.11.11"

lazy val root = (project in file("."))
  .dependsOn(demo)
  .aggregate(demo)

lazy val demo = project
  .enablePlugins(PlayScala)

我在addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.14")里面定义plugins.sbt了 root project/

demo/build.sbt我有

name := "demo"

version in ThisBuild := "1.0-SNAPSHOT"

libraryDependencies += filters
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "2.0.0" % Test

现在,当我执行时sbt run,我收到以下错误:

java.lang.RuntimeException: No main class detected.
    at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last root/compile:run for the full output.
[error] (root/compile:run) No main class detected.

但是,如果我将 rootbuild.sbt和 rootproject/放入其中demo/并尝试sbt run,则项目编译成功,我可以以常规方式访问播放服务器。

为什么会抛出这个错误?我是否需要在根目录中为 play 项目显式声明一个主类build.sbt?我正在按照http://www.scala-sbt.org/0.13/docs/Multi-Project.html上的说明进行操作,但我有点迷路了。任何正确方向的帮助将不胜感激。

以供参考 - -

sbt 版本:0.13.15

斯卡拉版本:2.11.11

播放插件版本:2.5.14

4

1 回答 1

2

根项目中没有主类,只有演示项目中。

在根项目中启动 sbt 时,必须使用以下命令:

  • project demo
  • run

等效的一行可能是:sbt demo/run

对于您的更新,我不知道该怎么做,我建议不要这样做,而且我很确定 sbt 不会为您开箱即用。

请记住,可能有许多子项目,每个子项目都有自己的主类。在这种情况下,sbt 应该做什么?

另一种方法是将播放项目定义为根/聚合并在那里有子项目,如播放文档所示:https ://www.playframework.com/documentation/2.5.x/SBTSubProjects#Project-structure

于 2017-06-13T05:12:47.277 回答