Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
436 views
in Technique[技术] by (71.8m points)

sbt - How to set main class in build?

Upon sbt run I have multiple choices of main class.

I would like to set a main class so I've writen in build.sbt:

mainClass := Some("aMainClass")

But sbt fails with:

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

I've also tried with project/Project.scala file :

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

error :

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

How to set the main class in a build?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The main Class must be fully qualified with the package:

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

This will work for run and it will set the Main-Class in the Manifest when using the package task. The main class for these tasks can be set separately as in:

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

Note:

mainClass := Some("myPackage.aMainClass")

does nothing. If you put this in your build file you will receive no warning that it does nothing.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...