我的应用程序中有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.")
Run Code Online (Sandbox Code Playgroud)
所以我定义了它们(示例项目,两个类 - 源目录根目录中的Main1和Main2):
mainClass := Some("Main1")
selectMainClass := Some("Main1")
Run Code Online (Sandbox Code Playgroud)
sbt提示符中的`show main-class'似乎也有效:
[info] Some(Main1)
Run Code Online (Sandbox Code Playgroud)
但是,sbt的run任务仍然促使我进入主要班级.
此外,sbt-revolver无法处理具有异常的多个类java.util.NoSuchElementException: None.get
使用sbt 0.11.2.
我在这做错了什么?
Hei*_*ger 14
从使用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)
...
Run Code Online (Sandbox Code Playgroud)
因此,您必须使用适当的范围:
set mainClass in (Compile, run) := Some("Foo")
Run Code Online (Sandbox Code Playgroud)
rad*_*dke 13
为了防止这种情况
sbt> ~run
Multiple main classes detected, select one to run:
[1] com.yourapp.MainClass1
[2] com.yourapp.MainClass2
[3] com.yourapp.MainClass3
Run Code Online (Sandbox Code Playgroud)
做这个:
sbt> ~runMain com.yourapp.MainClass1
Run Code Online (Sandbox Code Playgroud)
如果要特别为左轮手枪指定主类:
set mainClass in Revolver.reStart := Some("some.package.mainClass")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11426 次 |
| 最近记录: |