【问题标题】:How to suppress info and success messages in sbt?如何抑制 sbt 中的信息和成功消息?
【发布时间】:2012-04-15 15:12:18
【问题描述】:

当我执行sbt run 时,我会看到一些我想删除的页眉和页脚信息:

$ sbt run 
[info] Set current project to XXX (in build file:/path/to/dir/)
<actual program output goes here; stuff I care about>
[success] Total time: 68 s, completed Apr 1, 2012 7:30:45 PM
$ 

我怎样才能摆脱这两条额外的线(即[info][success] 线)?是否有一些 build.sbt 配置设置可用于执行此操作?理想情况下,我不想为了摆脱这两条线而拥有另一个工具/依赖项。

以下是我尝试过的事情的列表:

  • 将运行日志级别设置为警告
  • 将全局日志级别设置为警告
  • 设置-Dsbt.log.noformat=true

我目前使用的解决方法: 复制sbt 生成的java 调用(通过执行pstop)作为执行fork in run := true 的结果,并直接在命令行上手动运行java 命令。

如果sbt 可以被告知不要打印这些行,那就更好了。

  • Scala 版本:2.9.1
  • SBT 版本:0.11.1

【问题讨论】:

  • 你总是这样启动你的应用程序吗? sbt 是一个构建工具,而不是一个应用程序运行器。如果我的假设是正确的,我建议您改为构建和打包您的应用程序并使用 `scala. 运行它
  • 谢谢@drexin 是的,我意识到有更好的方法来启动它。我现在使用one-jar。非常酷,并且正是我一直想做的事情:简单直接的调用后开发。

标签: scala sbt


【解决方案1】:

sbt 1.x, sbt 0.13.13+

使用-warn-error。见Fixes with compatibility implications for sbt 0.13.13 release

强烈建议迁移到单个连字符选项:-error-warn-info-debug

sbt 0.13.1

要禁用info 消息,请使用--warn--error 命令行选项运行SBT。

要禁用[success] 消息,请将showSuccess 设置为false

综合起来,它为您提供了以下选项:

  • 在命令行使用以下命令:

      $ sbt --error 'set showSuccess := false' run
    
  • build.sbt 中添加showSuccess := false

      $ cat build.sbt
      showSuccess := false
    

并执行sbt --error run

【讨论】:

  • 这也是我的经验。不再适用于 sbt 1.0.2。
  • 应该在 sbt 1.1.2 中再次工作:fix
  • 我在 1.5.5 中仍然收到 [info] 消息
  • 具体来说,在sbt 之后执行~run 时,我仍然看到[info]。如果我这样做 sbt run 它会按照此答案中的说明工作。
【解决方案2】:

正如 Jacek 在他的回复中提到的那样,在 build.sbt 中,您可以添加 showSuccess := false 来抑制 [success] 消息。为了抑制[info] 消息,我将logLevel 设置为Level.Warn,仅用于run 配置。放在一起,你想将这些行添加到build.sbt

showSuccess := false

logLevel in run := Level.Warn

【讨论】:

    【解决方案3】:

    您应该能够通过将其添加到您的 build.sbt 文件中来摆脱“设置当前项目”行:

    onLoadMessage := ""
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      相关资源
      最近更新 更多