mirror of https://github.com/sbt/sbt.git
run-main for specifying main class to run
This commit is contained in:
parent
2ab8f5c3c0
commit
496cd05de8
|
|
@ -140,6 +140,7 @@ object Defaults
|
|||
mainClass in run :== selectMainClass,
|
||||
mainClass <<= discoveredMainClasses map selectPackageMain,
|
||||
run <<= runTask(fullClasspath, mainClass in run, runner in run),
|
||||
runMain <<= runMainTask(fullClasspath, runner in run),
|
||||
scaladocOptions <<= scalacOptions(identity),
|
||||
doc <<= docTask,
|
||||
copyResources <<= copyResourcesTask
|
||||
|
|
@ -274,6 +275,17 @@ object Defaults
|
|||
def selectPackageMain(classes: Seq[String]): Option[String] =
|
||||
sbt.SelectMainClass(None, classes)
|
||||
|
||||
|
||||
def runMainTask(classpath: ScopedTask[Classpath], scalaRun: ScopedSetting[ScalaRun]): Initialize[InputTask[Unit]] =
|
||||
{
|
||||
import DefaultParsers._
|
||||
val mainParser = (Space ~> token(NotSpace, "<main-class>")) ~ complete.Parsers.spaceDelimited("<arg>")
|
||||
InputTask(_ => mainParser) { result =>
|
||||
(classpath, scalaRun, streams, result) map { case (cp, runner, s, (mainClass, args)) =>
|
||||
runner.run(mainClass, data(cp), args, s.log) foreach error
|
||||
}
|
||||
}
|
||||
}
|
||||
def runTask(classpath: ScopedTask[Classpath], mainClassTask: ScopedTask[Option[String]], scalaRun: ScopedSetting[ScalaRun]): Initialize[InputTask[Unit]] =
|
||||
InputTask(_ => complete.Parsers.spaceDelimited("<arg>")) { result =>
|
||||
(classpath, mainClassTask, scalaRun, streams, result) map { (cp, main, runner, s, args) =>
|
||||
|
|
@ -299,6 +311,7 @@ object Defaults
|
|||
}
|
||||
|
||||
def mainRunTask = run <<= runTask(fullClasspath in Configurations.Runtime, mainClass in run, runner in run)
|
||||
def mainRunMainTask = runMain <<= runMainTask(fullClasspath in Configurations.Runtime, runner in run)
|
||||
|
||||
def discoverMainClasses(analysis: inc.Analysis): Seq[String] =
|
||||
Discovery.applications(Tests.allDefs(analysis)) collect { case (definition, discovered) if(discovered.hasMain) => definition.name }
|
||||
|
|
@ -401,7 +414,7 @@ object Defaults
|
|||
lazy val baseClasspaths = Classpaths.publishSettings ++ Classpaths.baseSettings
|
||||
lazy val configSettings = Classpaths.configSettings ++ configTasks ++ configPaths ++ packageConfig
|
||||
|
||||
lazy val compileSettings = configSettings ++ (mainRunTask +: addBaseSources)
|
||||
lazy val compileSettings = configSettings ++ (mainRunMainTask +: mainRunTask +: addBaseSources)
|
||||
lazy val testSettings = configSettings ++ testTasks
|
||||
|
||||
lazy val itSettings = inConfig(Configurations.IntegrationTest)(testSettings)
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@ object Keys
|
|||
val selectMainClass = TaskKey[Option[String]]("select-main-class")
|
||||
val mainClass = TaskKey[Option[String]]("main-class")
|
||||
val run = InputKey[Unit]("run")
|
||||
val runMain = InputKey[Unit]("run-main")
|
||||
val discoveredMainClasses = TaskKey[Seq[String]]("discovered-main-classes")
|
||||
val runner = SettingKey[ScalaRun]("runner")
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue