Comment définir la classe principale dans la construction?

Lors de l’ sbt run j’ai plusieurs choix de classe principale.

Je voudrais définir une classe principale, donc j’ai écrit dans build.sbt :

 mainClass := Some("aMainClass") 

Mais sbt échoue avec:

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

J’ai aussi essayé avec le fichier project/Project.scala :

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

Erreur :

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

Comment définir la classe principale dans une construction?

La classe principale doit être entièrement qualifiée avec le package:

 Comstack/mainClass := Some("myPackage.aMainClass") 

Cela fonctionnera pour run et définira la classe principale dans le manifeste lors de l’utilisation de la tâche du package. La classe principale de ces tâches peut être définie séparément comme dans:

 mainClass in (Comstack, run) := Some("myPackage.aMainClass") mainClass in (Comstack, packageBin) := Some("myPackage.anotherMainClass") 

Remarque:

 mainClass := Some("myPackage.aMainClass") 

ne fait rien. Si vous mettez ceci dans votre fichier de construction, vous ne recevrez aucun avertissement indiquant qu’il ne fait rien.

À ma connaissance, sbt attend ici un nom de classe / object complet dans votre projet. Par exemple, si votre classe principale est comme ceci:

 package prog object Main extends App { // Hic sunt dracones } 

alors vous devriez donner votre classe principale comme ceci:

 mainClass := Some("prog.Main") 

Vous obtenez une erreur de type car ce type n’est pas simplement trouvé.