使 SBT 任务依赖于 OneJar 任务 [英] Getting an SBT task to depend on the OneJar task
本文介绍了使 SBT 任务依赖于 OneJar 任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我无法让我的新 SBT 任务安装"依赖于 OneJar任务.这是我的 Build.scala 文件:
I'm having trouble getting my new SBT task 'install' to depend on the OneJar task. Here's my Build.scala file:
import sbt._
import Keys._
import com.github.retronym.SbtOneJar._
object BuildBroBuild extends Build {
val install = TaskKey[Unit]("install", "Installs the JAR and a launcher script into your homedir")
private def installTask = task {
println("Hello world!")
}
override lazy val settings = super.settings ++
Seq(install <<= (oneJar in Global)(installTask dependsOn(_)))
lazy val root = Project(id = "buildbro",
base = file("."),
settings = Project.defaultSettings)
}
这是我得到的错误:
[error] Reference to undefined setting:
[error]
[error] */*:one-jar from {.}/*:install
[error] Did you mean *:one-jar ?
[error]
有人知道这是什么意思吗?我相信我必须以不同的方式确定 oneJar TaskKey 的范围.感谢您提供的任何帮助.
Does anybody know what this means? I believe I have to scope the oneJar TaskKey in a different way. Thanks for any help you can offer.
推荐答案
我认为这样的事情应该可行:
I think something like this should work:
object BuildBroBuild extends Build {
val install = TaskKey[Unit]("install", "Installs the JAR and a launcher script into your homedir")
private lazy val installTask = install <<= (oneJar, streams) map { case (a, s) => {
// 'a' is the output from the onejar task (ie, the artifact)
println("Hello world!")
}
override lazy val settings = super.settings ++
Seq(installTask)
lazy val root = Project(id = "buildbro",
base = file("."),
settings = Project.defaultSettings)
}
在这里,我们将 oneJar 任务的输出(以及允许日志记录等的 streams
)作为我们新任务的输入.
Here, we are taking the output of the oneJar task (as well as streams
, which allows for logging, etc) as input for our new task.
这篇关于使 SBT 任务依赖于 OneJar 任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文