【问题标题】:SBT Autoplugin and task modification with "dependsOn"SBT Autoplugin 和使用“dependsOn”修改任务
【发布时间】:2015-02-05 04:28:42
【问题描述】:

我为 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

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

谢谢

【问题讨论】:

    标签: sbt


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-06-02
      • 1970-01-01
      • 2019-04-02
      • 2014-10-07
      • 2014-10-15
      • 1970-01-01
      • 2019-07-28
      • 2019-08-09
      • 2021-11-20
      相关资源
      最近更新 更多