2017-06-12 52 views
0

更新: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

+0

的'從根'build.sbt'屬於libraryDependencies'線到'demo/build.sbt',你也不需要在'build.sbt'根目錄下'.enablePlugins(PlayScala)',因爲你已經在'demo/build.sbt'(它所屬的地方)做過了。改變這些後怎麼樣? –

回答

2

有沒有主類是在根項目,只在演示項目中。

根項目時啓動SBT,你必須使用下面的命令:

  • project demo
  • run

相當於一個行可能是:sbt demo/run

對你的更新,我不知道該怎麼做,我會建議反對,而且我很確定這不是什麼問題。我爲你開箱。

請記住,可能有許多子項目,每個子項目都有自己的主類。在這種情況下,應該怎麼做?

另一種方法是定義遊戲項目爲根/骨料和具有子項目有,如圖所示它播放DOC:https://www.playframework.com/documentation/2.5.x/SBTSubProjects#Project-structure