sbt 0.13.8 添加了 Def.sequential
函数以在半顺序语义下运行任务。为了演示顺序任务,让我们创建一个名为 compilecheck
的自定义任务,它运行 Compile / compile
然后运行 Compile / scalastyle
任务(由 scalastyle-sbt-plugin 添加)。
以下是设置方法
sbt.version=1.9.8
addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0")
lazy val compilecheck = taskKey[Unit]("compile and then scalastyle")
lazy val root = (project in file("."))
.settings(
Compile / compilecheck := Def.sequential(
Compile / compile,
(Compile / scalastyle).toTask("")
).value
)
要调用此任务,从 shell 中输入 compilecheck
。如果编译失败,compilecheck
将停止执行。
root> compilecheck
[info] Compiling 1 Scala source to /Users/x/proj/target/scala-2.10/classes...
[error] /Users/x/proj/src/main/scala/Foo.scala:3: Unmatched closing brace '}' ignored here
[error] }
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
看起来我们成功地对这些任务进行了排序。