Как установить основной класс в сборке? - PullRequest
74 голосов
/ 24 июня 2011

После sbt run У меня есть несколько вариантов основного класса.

Я хотел бы установить основной класс, поэтому я написал в build.sbt:

mainClass := Some("aMainClass")

Но sbtне удается с:

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

Я также пытался с project/Project.scala file:

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

ошибка:

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

Как установить основной класс всборка?

Ответы [ 2 ]

98 голосов
/ 13 августа 2013

Основной класс должен быть полностью квалифицирован с пакетом:

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

Это будет работать для запуска и будет устанавливать Main-Class в манифесте при использовании задачи пакета. Основной класс для этих задач может быть установлен отдельно как в:

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

Примечание:

mainClass := Some("myPackage.aMainClass")

ничего не делает. Если вы поместите это в свой файл сборки, вы не получите предупреждения о том, что он ничего не делает.

23 голосов
/ 24 июня 2011

Насколько я знаю, sbt ожидает здесь полное имя класса / объекта в вашем проекте. Например, если ваш основной класс такой:

package prog

object Main extends App {
    // Hic sunt dracones
}

тогда вам нужно дать свой основной класс следующим образом:

mainClass := Some("prog.Main")

Вы получаете ошибку типа, потому что этот тип не просто найден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...