对于我的多项目构建,我正在尝试创建一个验证任务,它只会导致 scct:test 然后按顺序执行 scalastyle。我希望 scct:test 为所有子项目执行,但不是顶级项目。(如果它为顶级项目执行,我会从 scct 得到“等待覆盖率报告超时”,因为该项目中没有源代码也没有测试。)我想做的是创建 verify 作为任务对 scct:test 和 scalastyle 的依赖。这被证明是相当巴洛克式的。这是我的顶级项目/目录中的 Build.scala:
object MyBuild extends Build {
val verifyTask = TaskKey[Unit]("verify", "Compiles, runs tests via scct:test and then runs scalastyle")
val scctTestTask = (test in ScctPlugin.Scct).scopedKey
val scalastyleTask = PluginKeys.scalastyleTarget.scopedKey
lazy val root = Project("rootProject",
file("."),
settings = Defaults.defaultSettings ++
ScalastylePlugin.Settings ++
ScctPlugin.instrumentSettings ++
ScctPlugin.mergeReportSettings ++
Seq(
verifyTask in Global := {},
verifyTask <<= verifyTask.dependsOn(scctTestTask, scalastyleTask)
)
) aggregate(lift_webapp, selenium_tests)
lazy val subproject_1 = Project(id = "subproject_1", base = file("subproject_1"))
lazy val subproject_2 = Project(id = "subproject_2", base = file("subproject_2"))
}
但是,verify 任务似乎只存在于根项目;当我运行它时,我看不到子项目中正在运行相同的任务。这与我想要的完全相反;我想sbt verify
在每个子项目中发布并让 scct:test 和 scalastyle 运行,但不在顶级项目中。我该怎么做呢?