SBT Autoplugin和任务修改" dependsOn"

时间:2015-02-04 20:12:42

标签: sbt

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

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

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

这很有效。

现在使用Autoplugin,我有以下代码

  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

我们可以看到设置测试:测试是由默认的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

在这种情况下是否有关于优先权的想法?

谢谢

1 个答案:

答案 0 :(得分:1)

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