sbt: выбор основного класса для бега - PullRequest
15 голосов
/ 23 декабря 2011

В моем приложении ~ 6 основных классов, обычно я использую только один из них, поэтому я хотел запустить его автоматически с помощью sbt.sbt позволяет определить два ключа в build.sbt:

// Run Key
val selectMainClass = TaskKey[Option[String]]("select-main-class", "Selects the main class to run.")
val mainClass = TaskKey[Option[String]]("main-class", "Defines the main class for packaging or running.")

, поэтому я определил их (пример проекта, два класса - Main1 и Main2 в корне исходного каталога):

mainClass := Some("Main1")

selectMainClass := Some("Main1") 

И `show main-class 'из приглашения sbt также, кажется, работает:

[info] Some(Main1)

Но задача sbt run по-прежнему запрашивает у меня основной класс.* sbt-revolver не работает с несколькими классами за исключением java.util.NoSuchElementException: None.get

Использование sbt 0.11.2.

Что я здесь не так делаю?

Ответы [ 4 ]

13 голосов
/ 01 октября 2014

Чтобы предотвратить это:

sbt> ~run

Multiple main classes detected, select one to run:

[1] com.yourapp.MainClass1
[2] com.yourapp.MainClass2
[3] com.yourapp.MainClass3    

сделайте это:

sbt> ~runMain com.yourapp.MainClass1
13 голосов
/ 23 декабря 2011

Как вы можете видеть из inspect , mainClass относится к различным конфигурациям и задачам:

> inspect compile:main-class(for run)
[info] Task: scala.Option[java.lang.String]
[info] Description:
[info]  Defines the main class for packaging or running.
[info] Provided by:
[info]  {file:/Users/heiko/tmp/}default-d7f1bf/compile:main-class(for run)
...

Поэтому вы должны использовать правильную область видимости:

set mainClass in (Compile, run) := Some("Foo")
5 голосов
/ 13 сентября 2012

Если вы хотите указать основной класс для револьвера, в частности:

set mainClass in Revolver.reStart := Some("some.package.mainClass")
2 голосов
/ 30 марта 2018

онлайн-консоль:

sbt "run-main com.path.to.MainClass"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...