【发布时间】:2023-03-03 10:33:01
【问题描述】:
我想在 sbt 中定义一个复合任务,以便在我的 CI 作业中运行的所有任务都可以在单个命令中执行。例如在我跑步的那一刻:
clean coverage test scalastyle coverageReport package
不过我只想运行
ci
这实际上是上述所有任务的别名。此外,我想在一个 scala 文件中定义它(而不是 build.sbt),这样我就可以将它包含在一个已经存在的通用 scala 插件中,因此它对我的所有项目都可用。
到目前为止(在大量阅读文档之后)我已经设法完成了一项仅依赖于 scalastyle 的任务:
lazy val ci = inputKey[Unit]("Prints 'Runs All tasks for CI")
ci := {
val scalastyleResult = (scalastyle in Compile).evaluated
println("In the CI task")
}
但是,如果我尝试添加另一个任务(例如发布任务),例如:
ci := {
val scalastyleResult = (scalastyle in Compile).evaluated
val publishResult = (publish in Compile).evaluated
println("In the CI task")
}
这失败了:
[error] [build.sbt]:52: illegal start of simple expression
[error] [build.sbt]:55: ')' expected but '}' found.
我的第一个问题是这种方法是否确实是定义复合任务的正确方法。
如果是这种情况,那么我怎样才能使 ci 任务依赖于提到的所有任务。
【问题讨论】: