Scala 使用sbt定义多个运行命令
我使用的是sbt 0.13.5。我的项目中有几个子项目,特别是一个spray客户端和一个spray路由服务器。 我希望能够定义几个“run”命令,比如runClient和runServer。 对于每个子项目,我创建一个main类并在sbt文件中进行设置。 现在,我希望能够: -在不同的终端会话中启动多个sbt。 -在一个会话中,键入runClient -在另一个会话中,键入runServer。 在sbt中有没有合适的方法?我尝试将runServer定义为新命令:Scala 使用sbt定义多个运行命令,scala,command,sbt,Scala,Command,Sbt,我使用的是sbt 0.13.5。我的项目中有几个子项目,特别是一个spray客户端和一个spray路由服务器。 我希望能够定义几个“run”命令,比如runClient和runServer。 对于每个子项目,我创建一个main类并在sbt文件中进行设置。 现在,我希望能够: -在不同的终端会话中启动多个sbt。 -在一个会话中,键入runClient -在另一个会话中,键入runServer。 在sbt中有没有合适的方法?我尝试将runServer定义为新命令: def runServer =
def runServer = Command.command("runServer") { state =>
println("run Server")
run in Compile in server
state
}
def runClient = Command.command("runClient") { state =>
println("run Client")
run in Compile in client
state
}
其中server是我的服务器项目。
我在项目的命令中添加runServer:
lazy val root = Project(id = "myproject", base = file("."),
settings = commands ++= Seq(runServer, runClient)
).aggregate(client, server)
在sbt中,如果我键入runServer,println会工作,但不会启动任何程序。
您知道如何执行“run”语句吗
谢谢。我认为你不必借助命令来实现你想要的东西。简单的任务就足够了 不过有一个警告。
run
任务是一个输入任务,在引用它之前必须将其转换为普通任务
build.sbt
现在,您应该能够使用runServer
运行服务器,使用runClient
运行客户端
还请注意,您可以使用
server/run
和client/run
运行这两个命令,而无需使用自定义任务或命令。谢谢,我尝试过,但我遇到了一个sbt错误:>runAMServer[error]不是有效的命令:runAMServer[error]不是有效的项目ID:runAMServer[error]预期的“:”(如果选择配置)[error]不是有效的键:runAMServer(类似:runner)[error]runAMServer
能否粘贴项目的输出
并显示如何定义任务?这些是我的任务`val runAMTest=taskKey[Unit](“将AM服务器作为测试运行”)val runAMServer=taskKey[Unit](“运行AM服务器”)runAMServer:=(在修正点中编译运行)。toTask(“”)。value runTEEClient:=(在teeEndPoint中编译运行)。toTask(“”)。value``哦。我需要在根项目的设置中添加任务,对吗?@Joel yes,在根项目中。
val client, server = project
val runServer = taskKey[Unit]("Runs server")
val runClient = taskKey[Unit]("Runs client")
runClient := (run in Compile in client).toTask("args to the main class").value
runServer := (run in Compile in server).toTask("args to the main class").value