2011-06-24 12 views
66

Po Mam wiele wyborów głównej klasy.Jak ustawić główną klasę w kompilacji?

Chciałbym ustawić główne klasy tak mam napisane w build.sbt:

mainClass := Some("aMainClass") 

Ale SBT nie powiedzie się z:

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

Ja również próbował z project/Project.scala pliku:

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

błąd:

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

Jak ustawić główną klasę w kompilacji?

Odpowiedz

22

O ile mi wiadomo, sbt oczekuje tutaj pełnej nazwy klasy/obiektu w ramach projektu. Na przykład, jeśli głównym klasa jest tak:

package prog 

object Main extends App { 
    // Hic sunt dracones 
} 

wtedy trzeba by dać swoją główną klasę tak:

mainClass := Some("prog.Main") 

pojawi się błąd typu, ponieważ ten typ nie jest łatwo znaleźć.

+14

Korzystanie SBT 0.11.2 znalazłem musiałem ustawić główne klasy w kompilacji i uruchomieniowych zakresów: 'mainClass w kompilacji (run): = ("Some prog.Main")' –

90

głównej klasy musi być w pełni kwalifikowana z pakietu:

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

To będzie działać na biegu i będzie ustawić Main-Class w manifeście, gdy za pomocą zadania pakietu. Główna klasa dla tych zadań można ustawić oddzielnie, jak w:

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

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

Uwaga:

mainClass := Some("myPackage.aMainClass") 

nic nie robi. Jeśli umieścisz to w pliku kompilacji, nie otrzymasz żadnego ostrzeżenia, że ​​nic nie robi.

+1

Uwaga podobnie, że ' mainClass in run: = Some ("myPackage.aMainClass") 'również nie robi nic. – tksfz

Powiązane problemy