如何在构建中设置主类?

时间:2011-06-24 11:55:38

标签: sbt

sbt run后,我有多个主类选择。

我想设置一个主要类,所以我写在build.sbt

mainClass := Some("aMainClass")

但是sbt失败了:

build.sbt:1: error: not found: value aMainClass

我也尝试使用project/Project.scala文件:

import sbt._
  class ExecutableProject(info: ProjectInfo) extends DefaultProject(info)  {
  override def mainClass = Some("aMainClass")
}

错误:

 project/Project.scala:3: not found: type aMainClass

如何在构建中设置主类?

2 个答案:

答案 0 :(得分:97)

主类必须完全符合包:

Compile/mainClass := Some("myPackage.aMainClass")

这将适用于run,它将在使用package任务时在Manifest中设置Main-Class。这些任务的主要类可以单独设置,如下所示:

mainClass in (Compile, run) := Some("myPackage.aMainClass")
mainClass in (Compile, packageBin) := Some("myPackage.anotherMainClass")

注意:

mainClass := Some("myPackage.aMainClass")

什么都不做。如果你把它放在你的构建文件中,你将不会收到它什么也不做的警告。

答案 1 :(得分:23)

据我所知,sbt在这里需要一个完全限定的类/对象名称。例如,如果您的主类是这样的:

package prog

object Main extends App {
    // Hic sunt dracones
}

然后你必须像这样给你的主要课程:

mainClass := Some("prog.Main")

您收到类型错误,因为找不到该类型。