私のマルチプロジェクト ビルドでは、結果として scct:test と scalastyle が順番に実行される検証タスクを作成しようとしています。トップレベルのプロジェクトではなく、すべてのサブプロジェクトに対して scct:test を実行したいと考えています。(トップレベルのプロジェクトで実行すると、そのプロジェクトにはソースもテストもないため、scct から「カバレッジ レポートを待っている間にタイムアウトしました」というメッセージが表示されます。) scct:test と scalastyle への依存関係。これはかなりバロックであることが判明しました。最上位の project/ ディレクトリの 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"))
}
ただし、検証タスクはルート プロジェクトに対してのみ存在するようです。実行すると、サブプロジェクトで同じタスクが実行されていません。これは私が望むものとは正反対です。各サブプロジェクトで scct:test と scalastyleを発行して実行したいsbt verify
のですが、最上位プロジェクトでは実行したくありません。どうすればそれを行うことができますか?