将SBT任务的结果返回到stdout

时间:2018-03-15 20:58:37

标签: sbt

如何将sbt任务的结果返回给stdout

假设我在sbt中有一个返回java.io.File的任务,如何运行sbt只返回任务的结果?没有任何[success]消息或其他日志记录?

e.g。如果sbt "show foo"返回

...
[info] Lots of output noise
[info]   /usr/local/foo/bar
[success] Total time: 43 s, completed ...

我希望echo $(sbt show foo)返回类似

的内容
/usr/local/foo/bar

对于上下文,返回的文件将在shell脚本中使用,移动到其他地方等。

2 个答案:

答案 0 :(得分:1)

您可以使用类似于print的{​​{1}}命令来打印任何可能的任务的结果和show全局日志级别标志。

格式如下:

--error

SBT日志记录文档

简单的示例。

build.sbt

sbt "print <task you want to print>" --error 

在终端机中

lazy val foo = taskKey[String]("foo")
foo := "Foo"

更复杂的示例。

检测sbt-assembly产生的胖子。

src / main / scala / Main.scala

$ sbt "print foo" --error
Foo

plugins.sbt

object Main {
  def main(args: Array[String]): Unit = {
    println("Hello world!")
  }
}

在终端机中

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.15.0")

答案 1 :(得分:0)

基本上,您想要做的是更改sbt的详细程度。您可以通过在命令末尾添加-error来实现。 例如,如果我的sbt中有:

val filePath = "/some/file/path"
lazy val getFilePath = taskKey[Unit]("A task that gets the file path")
getFilePath := {
  println(filePath)
}

因此,在运行命令时:

sbt getFilePath -error

我得到:

/some/file/path
相关问题