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会假设它是主类而没有定义这个键吗?