Sbt没有启用一些自定义插件

时间:2017-09-26 14:31:02

标签: sbt sbt-plugin

我写过像这样的autoPlugin

object ThriftIfaceSbt extends AutoPlugin {

  override def projectSettings = {
    Seq(
      crossVersion := {
        println(s"Init ThriftIfaceSbt ${name.value}")
        CrossVersion.Disabled
      },
      autoScalaLibrary := false,
      resourceDirectories in Compile += baseDirectory.value / "src" / "main" / "thrift"
    )
  }

}

然后我发布了local并在build.sbt中尝试

lazy val myProject = (project in file("a")).enablePlugins(ThriftIfaceSbt)

该插件未应用于项目..我不明白为什么。

SBT可能会默默地忽略我的插件吗?

1 个答案:

答案 0 :(得分:1)

它不起作用的一个可能原因是因为你覆盖了sbt JvmPlugin提供的设置,但你没有声明对它的依赖,所以它们应用的顺序是未定义的。如果您的插件首先被应用,那么JvmPlugin设置将覆盖您的插件配置的任何内容。

您需要添加:

override def requires = sbt.plugins.JvmPlugin

到你的插件。即使这不能解决您的问题,您仍然需要添加它。