Scala 主类设置在sbt中是如何工作的?

Scala 主类设置在sbt中是如何工作的?,scala,sbt,Scala,Sbt,我似乎找不到任何关于mainClass选项如何在sbt的构建配置中工作的细节。当您调用run操作时,指定要使用的类的名称,但是它实际上对它做了什么?它调用类上的方法吗? 方法mainClass的类型为Option[String],并指定在调用运行任务时要运行的可选主类。默认实现不指定主类(None)。未指定mainClass时,运行任务将确定要自动运行的类。如果只检测到一个主类,则运行它。如果检测到多个主类,将提示用户运行哪个主类 类名应该引用具有defmain(args:Array[Strin

我似乎找不到任何关于
mainClass
选项如何在sbt的构建配置中工作的细节。当您调用
run
操作时,指定要使用的类的名称,但是它实际上对它做了什么?它调用类上的方法吗?

方法mainClass的类型为Option[String],并指定在调用运行任务时要运行的可选主类。默认实现不指定主类(None)。未指定mainClass时,运行任务将确定要自动运行的类。如果只检测到一个主类,则运行它。如果检测到多个主类,将提示用户运行哪个主类

类名应该引用具有
defmain(args:Array[String]):Unit
方法的同名对象。该方法已运行

所以如果你创造

package foo
object Foo { def main(args:Array[String]) { println("foo") } }

然后,您可以使用
override def mainClass=Some(“foo.foo”)
,这样运行目标将运行
foo.foo

,而这不会回答我的问题。课堂“跑”是怎么回事?我的答案稍微修改了一下。还是你在问sbt的内部问题?不,你明白了。谢谢为什么在任何地方都没有记录?我是否遗漏了它?在我看来,它似乎在Scala语言规范的第9.5节中-。但是直到现在我还没有检查过,因为这类似于Java中使用的
静态void main(String[]args)
。@huynhjl要清楚,如果您描述的main方法正好有一个
对象
,SBT会假设它是主类而没有定义这个键吗?