に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
ビルドでメインクラスを設定する方法
メインクラスは、パッケージで完全に修飾する必要があります。
Compile/mainClass := Some("myPackage.aMainClass")
これは実行時に機能し、パッケージタスクを使用するときにマニフェストにメインクラスを設定します。これらのタスクのメインクラスは、次のように個別に設定できます。
mainClass in (Compile, run) := Some("myPackage.aMainClass")
mainClass in (Compile, packageBin) := Some("myPackage.anotherMainClass")
注意:
mainClass := Some("myPackage.aMainClass")
何もしません。これをビルドファイルに入れても、何もしないという警告は表示されません。
私の知る限り、sbt
は、プロジェクト内の完全修飾クラス/オブジェクト名をここで期待しています。たとえば、メインクラスが次のような場合:
package prog
object Main extends App {
// Hic sunt dracones
}
次のようにメインクラスを指定する必要があります。
mainClass := Some("prog.Main")
その型は単純に見つからないため、型エラーが発生します。