【问题标题】:How does the mainClass setting work in sbt?mainClass 设置在 sbt 中是如何工作的?
【发布时间】:2011-03-06 10:21:55
【问题描述】:

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

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    http://code.google.com/p/simple-build-tool/wiki/BuildConfiguration#Run_Options

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

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

    所以如果你创建

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

    然后您可以使用override def mainClass = Some("foo.Foo") 以便run 目标将运行foo.Foo

    【讨论】:

    • 这不能回答我的问题。一个类是如何“运行”的?
    • 稍微编辑了我的答案。或者你问的是 sbt 的内部结构?
    • 不,你明白了。谢谢。为什么这在任何地方都没有记录?我错过了吗?
    • 在我看来它在 Scala 语言规范的第 9.5 节中 - scala-lang.org/docu/files/ScalaReference.pdf 。但直到现在我还没有检查过,因为这类似于 Java 中使用的static void main(String[] args)
    • @huynhjl 需要明确的是,如果您描述的 main 方法中只有一个 object,SBT 是否假定它是未定义此键的主类?
    猜你喜欢
    • 2016-04-30
    • 2020-03-19
    • 2015-10-28
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2023-03-21
    • 2014-12-11
    相关资源
    最近更新 更多