2011-06-24 29 views
66

sbt run我有主要類的多種選擇。如何在構建中設置主類?

我想設置一個主類,所以我一直在build.sbt writen:

mainClass := Some("aMainClass") 

但是SBT失敗:

build.sbt:1: error: not found: value aMainClass 

我也試圖與project/Project.scala文件:

import sbt._ 
    class ExecutableProject(info: ProjectInfo) extends DefaultProject(info) { 
    override def mainClass = Some("aMainClass") 
} 

錯誤:

project/Project.scala:3: not found: type aMainClass 

如何在構建中設置主類?

回答

22

據我所知,sbt期望在這裏一個完全合格的類/對象名稱在您的項目。例如,如果你的主類是這樣的:

package prog 

object Main extends App { 
    // Hic sunt dracones 
} 

那麼你就必須給你的主類是這樣的:

mainClass := Some("prog.Main") 

你得到一個類型錯誤,因爲該類型不是簡單地找到。

+14

使用SBT 0.11.2我發現我必須在編譯和運行範圍中設置主類: 'mainClass in(Compile,run):= Some(「prog.Main」)' –

90

主要類別必須與包裝完全合格:

mainClass in Compile := Some("myPackage.aMainClass") 

這將爲運行工作,它會使用包任務時設置主類的清單。這些任務的主類可分別設置爲:

mainClass in (Compile, run) := Some("myPackage.aMainClass") 

mainClass in (Compile, packageBin) := Some("myPackage.anotherMainClass") 

注:

mainClass := Some("myPackage.aMainClass") 

什麼都不做。如果你把它放在你的構建文件中,你將不會收到任何警告。

+1

注意類似地, mainClass在運行:=一些(「myPackage.aMainClass」)'什麼都不做。 – tksfz