在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
如何在构建中设置主类?
答案 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")
您收到类型错误,因为找不到该类型。