我有一个带有多个子项目的SBT项目。除非我明确执行“; project xyz; test-only”之类的操作,否则其中一个子项目具有我不希望运行的测试。因此,如果我的项目结构是:
主main / abc main / def main / xyz
理想情况下,在main中运行“ test”将在main,main / abc和main / def项目中执行任何测试,但不会在main / xyz中执行。
我试图在构建文件中为主类添加一个测试过滤器,以排除main / xyz中的所有测试(按包名),然后在main / xyz项目中添加一个单独的build.sbt文件以将其添加回去,但这仍然导致从顶级项目执行测试...
“聚合”是使test在其他项目(称为聚合项目或“执行依赖项”)以及当前项目上执行的功能的名称。您可以在“ 多项目构建”页面上找到更多信息。
我将在“主”项目中创建一个自定义任务,该任务取决于要运行的任务。例如,
myTestTask <<= Seq(
test in (main, Test),
test in (abc, Test),
test in (deff, Test)
).dependOn
Run Code Online (Sandbox Code Playgroud)
在哪里val myTestTask = TaskKey[Unit]("my-test-task")和main, abc, and deff对您的项目的引用。
聚合仅应用于命令行上指定的顶级任务。因此,如果调用my-test-task,它将是唯一聚合的任务(在这种情况下,不会在任何子项目中定义它,因此不会通过聚合添加任何任务)。特别是,其依赖项(明确列出的test任务)不会汇总。结果是test in xyz调用时不会执行my-test-task。
最后,请注意,您可以说xyz/test-only要运行test-only该xyz项目而不更改该项目。
| 归档时间: |
|
| 查看次数: |
1265 次 |
| 最近记录: |