SBT Autoplugin 和任务修改 "dependsOn"

SBT Autoplugin and task modification with "dependsOn"

我已经为 SBT 项目创建了一个 Autoplugin 以在 Docker 容器中启动中间件以进行集成测试(Zookeeper 和 Kafka)。

我的第一个没有 Autoplugin 的版本是在项目设置中手动添加,例如:

(test in Test) <<= (test in Test) dependsOn zkStart

效果很好。

现在使用自动插件,我有以下代码

  override def projectSettings: Seq[Def.Setting[_]] = Seq(
    (test in Test) <<= (test in Test) dependsOn ZookeeperPlugin.zkStart
  )

但 Zookeeper 不再在测试前启动。

当我做的时候

[core_akka_cluster] $ inspect test
[info] Task: Unit
[info] Description:
[info]  Executes all tests.
[info] Provided by:
[info]  {file:/Users/xx/Projects/../../}core_akka_cluster/test:test
[info] Defined at:
[info]  (sbt.Defaults) Defaults.scala:394

我们可以看到设置 test:test 是由默认 SBT 值提供的。

当我在项目的构建定义中手动添加以前的设置时,这再次起作用,我们有以下分析

[core_akka_cluster] $ inspect test
[info] Task: Unit
[info] Description:
[info]  Executes all tests.
[info] Provided by:
[info]      [info]  {file:/Users/xx/Projects/../../}core_akka_cluster/test:test
[info] Defined at:
[info]  (sbt.Defaults) Defaults.scala:394
[info]  (com.ingenico.msh.sbt.KafkaPluginSettings) KafkaPlugin.scala:36

对这种情况下的优先级有什么想法吗?

谢谢

您要将自动插件设为触发插件吗? 由于 test 也是由 sbt 的自动插件(JvmPlugin)添加的,因此您应该需要 JvmPlugin.