Как установить основной класс в сборке?
В sbt run
у меня есть несколько вариантов основного класса.
Я хотел бы установить основной класс, поэтому я написал в build.sbt
:
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
Как установить основной класс в сборке?
Ответы
Ответ 1
Основной класс должен быть полностью укомплектован пакетом:
mainClass in Compile := Some("myPackage.aMainClass")
Это будет работать для запуска, и он будет устанавливать Main-Class в манифесте при использовании задачи пакета. Основной класс для этих задач можно установить отдельно, как в:
mainClass in (Compile, run) := Some("myPackage.aMainClass")
mainClass in (Compile, packageBin) := Some("myPackage.anotherMainClass")
Примечание:
mainClass := Some("myPackage.aMainClass")
ничего не делает. Если вы поместите это в свой файл сборки, вы не получите предупреждения о том, что он ничего не делает.
Ответ 2
Насколько я знаю, sbt
ожидает здесь полностью квалифицированного имени класса/объекта в вашем проекте. Например, если ваш основной класс выглядит следующим образом:
package prog
object Main extends App {
// Hic sunt dracones
}
тогда вам нужно будет указать свой основной класс следующим образом:
mainClass := Some("prog.Main")
Вы получаете ошибку типа, потому что этот тип не просто найден.