更新:sbt.build爲多個項目和playframework
所以,我想了解的問題是,爲什麼我不能在根文件夾中build.sbt
。即使我在build.sbt
文件夾中定義了lazy val root = ...
,也找不到主類。
這個reddit的鏈接:
https://www.reddit.com/r/scala/comments/4igc9x/sbt_playframework_no_main_class_detected/
提出一個解決問題的辦法。雖然sbt demo/run
確實執行了應用程序,但我希望最終只需從根項目編譯和所有項目中運行sbt run
,然後運行服務器。
任何人都可以在這裏幫忙嗎?
============================================== ===================
老問題:
我想了解如何build.sbt工作的,我不知道這是怎麼回事上。我想建立一個play項目作爲一個根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)
我的根project/
定義addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.14")
內plugins.sbt
。
內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.
然而如果我把根build.sbt
和根project/
內demo/
並嘗試到sbt run
,項目編譯成功,我可以訪問常規w中的播放服務器唉。
爲什麼這個錯誤被拋出?我是否需要明確聲明根目錄build.sbt
中的播放項目的主類?我遵循http://www.scala-sbt.org/0.13/docs/Multi-Project.html的指示,我只是有點迷路。任何幫助在正確的方向將不勝感激。
僅供參考---
SBT版本:0.13.15
階版本:2.11.11
播放插件版本:2.5.14
的'從根'build.sbt'屬於libraryDependencies'線到'demo/build.sbt',你也不需要在'build.sbt'根目錄下'.enablePlugins(PlayScala)',因爲你已經在'demo/build.sbt'(它所屬的地方)做過了。改變這些後怎麼樣? –