Scala Sbt插件与编译器插件
我试图理解为什么在项目中的plugins.sbt中添加sbt插件可以很好地工作,但是如果我在该文件中添加编译器插件,它就不能工作了 我认为项目中的任何.sbt或.scala文件都可以用于构建定义 编译器插件工作的唯一地方是build.sbt。因此,我不明白为什么 特别是,我和一个善良的投影仪一起工作Scala Sbt插件与编译器插件,scala,sbt,Scala,Sbt,我试图理解为什么在项目中的plugins.sbt中添加sbt插件可以很好地工作,但是如果我在该文件中添加编译器插件,它就不能工作了 我认为项目中的任何.sbt或.scala文件都可以用于构建定义 编译器插件工作的唯一地方是build.sbt。因此,我不明白为什么 特别是,我和一个善良的投影仪一起工作 addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.11.3" cros
addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.11.3" cross CrossVersion.full)
我看到函数的以下别名
/** Adds `dependency` to `libraryDependencies` in the auto-compiler plugin configuration. */
def addCompilerPlugin(dependency: ModuleID): Setting[Seq[ModuleID]] =
libraryDependencies += compilerPlugin(dependency)
因此,只是想理解,是什么使它只能添加到build.sbt而不能添加到project/中的plugins.sbt,记住sbt是递归的
.sbt
定义当前层中可用的内容。.scala
文件定义了下一层中可用的thin
在project/bar中添加一个sbt插件。sbt
就是将该插件添加到元层,例如,编译用于编译项目的sbt的元层会将这些插件添加到下一个sbt层
因此,如果您在
project/foo.sbt
中添加一个编译器插件,那么您正在将该编译器插件添加到用于编译sbt的项目(元)层的编译器中,但它在sbt的当前层中不可用。这就是为什么编译器插件被添加到build.sbt
文件中,因此它们被添加到用于编译代码的编译器中。请记住sbt是递归的
.sbt
定义当前层中可用的内容。.scala
文件定义了下一层中可用的thin
在project/bar中添加一个sbt插件。sbt
就是将该插件添加到元层,例如,编译用于编译项目的sbt的元层会将这些插件添加到下一个sbt层
因此,如果您在project/foo.sbt
中添加一个编译器插件,那么您正在将该编译器插件添加到用于编译sbt的项目(元)层的编译器中,但它在sbt的当前层中不可用。这就是为什么编译器插件被添加到build.sbt
文件中,所以它们被添加到用于编译代码的编译器中