【问题标题】:Defining multiple run commands with sbt使用 sbt 定义多个运行命令
【发布时间】:2014-09-11 03:32:09
【问题描述】:

我正在使用 sbt 0.13.5。我的项目中有几个子项目,特别是喷雾客户端和喷雾路由服务器。 我希望能够定义几个“运行”命令,例如 runClient 和 runServer。 对于每个子项目,我创建一个 mainClass 并将其设置在 sbt 文件中。 现在,我希望能够: - 在不同的终端会话中启动几个 sbt。 - 在一个会话中,键入 runClient - 在另一个会话中,键入 runServer。 在 sbt 中有没有合适的方法来做到这一点?我试图将 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 可以工作,但没有启动任何内容。 你知道如何执行“运行”语句吗?

谢谢。

【问题讨论】:

    标签: scala command sbt


    【解决方案1】:

    我认为您不必求助于命令来实现您正在寻找的东西。简单的任务就足够了。

    但有一个警告。 run 任务是输入任务,在引用它之前必须将其转换为普通任务。

    build.sbt

    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
    

    现在您应该可以使用runServer 运行您的服务器,使用runClient 运行客户端。

    另请注意,您可以使用 server/runclient/run 运行这两个命令,而无需借助自定义任务或命令。

    【讨论】:

    • 谢谢,我试过了,但我得到一个 sbt 错误:> runAMServer [error] Not a valid command: runAMServer [error] Not a valid project ID: runAMServer [error] Expected ':' (if selecting a configuration) [error] Not a valid key: runAMServer (similar: runner) [error] runAMServer
    • 您能否粘贴projects 命令的输出并显示您是如何定义任务的?
    • 这些是我的任务 `val runAMTest = taskKey[Unit]("Run the AM Sever as Test") val runAMServer = taskKey[Unit]("Run the AM Sever") runAMServer := (run in Compile in amEndPoint).toTask("").value runTEEClient := (run in Compile in teeEndPoint).toTask("").value ``
    • 哦。我需要在根项目的设置中添加任务,对吧?
    • @Joel 是的,在根项目中。
    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 2014-07-20
    • 2014-10-07
    • 2011-10-20
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多