SBT插件蒙版中的覆盖集成测试配置运行任务



请考虑以下SBT插件定义"覆盖"默认的" it"配置以扩展测试配置(出于在"如何使"测试"类" IT"(集成测试(配置"中可用的"测试"类别的原因?(

import sbt._
import Keys._
object MyPlugin extends AutoPlugin {
  private lazy val IntegrationTest = config("it") extend(Test)
  override def projectSettings: Seq[Setting[_]] = Seq(
    ...
  ) ++ inConfig(IntegrationTest)(Defaults.itSettings)
  override def projectConfigurations: Seq[Configuration] = IntegrationTest :: Nil
}

虽然这似乎一般起作用,但"面具"运行任务。请参阅使用上述插件的项目的以下SBT输出:

[myproject] $ inspect run
[info] Input task: Unit
[info] Description:
[info]  Runs a main class, passing along arguments provided on the command 
line.
[info] Provided by:
[info]  {file://myproject/}myproject/it:run
[info] Defined at:
[info]  (sbt.Defaults) Defaults.scala:307
...

Note IT:RUN 而不是编译:Run 。以某种方式重新定义"它"config似乎可以重新定义/掩码 run 任务。如果我选择例如"有趣"而不是"它"。我正在使用SBT 0.13.15。

知道这里发生了什么以及如何防止运行任务被掩盖?

问题是对sbt.plugins.JvmPlugin的缺少插件依赖性,该插件提供了编译/test/test/run/package java/scala项目的机制(请参阅http://www.scala-sbt.org/0.13/doc/used-plugins.html(。

添加

override def requires: Plugins = plugins.JvmPlugin

似乎解决了问题。

最新更新