如何将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脚本中使用,移动到其他地方等。
答案 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