我想定义一个sbt任务,该任务将在类路径上启动带有项目编译类的scala控制台,并执行一些初始命令。
我想像这样启动REPL会话
sbt session
这是我基于其他答案放在一起的抱歉尝试,但是既没有将项目的类放在类路径上,也没有不执行初始命令:
// extend Test in hope to include compiled sources on the classpath.
val ReplSession = config("repl-session") extend(Test)
val root = project.in(file("."))
.configs(ReplSession)
.settings(inConfig(ReplSession)(initialCommands := """
| import foo._
| """.stripMargin))
// define task that starts the REPL session
lazy val session = TaskKey[Unit]("session")
session <<= Seq(
console in (root, ReplSession)
).dependOn
答案 0 :(得分:0)
注意:如果某人有更好的解决方案,我会将其标记为正确答案。
对我有用的是改变
inConfig(ReplSession)(initialCommands := ...)
在我的原始代码段中
inConfig(Test)(initialCommands := ...)
或者,
initialCommands in (Test, console) := ...
为了完整性,我现在使用的是:
val ReplSession = config("repl-session") extend(Test)
val root = project.in(file("."))
.configs(ReplSession)
lazy val session = TaskKey[Unit]("session")
session <<= Seq(
console in (root, ReplSession)
).dependOn
initialCommands in (Test, console) := """
| import foo._
| """.stripMargin
我没有找到最佳效果,因为我在配置initialCommands
(我的Test
扩展)中设置了ReplSession
,而不是设置initialCommands
}仅在配置ReplSession
。