1. 编译器插件支持

编译器插件支持 

对使用编译器插件有一些特殊支持。您可以将 autoCompilerPlugins 设置为 true 以启用此功能。

autoCompilerPlugins := true

要使用编译器插件,您可以将其放在您的非托管库目录(默认情况下为 lib/)中,或者将其作为托管依赖项添加到 plugin 配置中。addCompilerPlugin 是一个方便的方法,用于指定 plugin 作为依赖项的配置。

addCompilerPlugin("org.scala-tools.sxr" %% "sxr" % "0.3.0")

compiletestCompile 操作将使用在 lib 目录或 plugin 配置中找到的任何编译器插件。您负责根据需要配置插件。例如,Scala X-Ray 需要额外的选项

// declare the main Scala source directory as the base directory
scalacOptions :=
    scalacOptions.value :+ ("-Psxr:base-directory:" + (Compile / scalaSource).value.getAbsolutePath)

您仍然可以手动指定编译器插件。例如

scalacOptions += "-Xplugin:<path-to-sxr>/sxr-0.3.0.jar"

延续插件示例 

Scala 2.12 中对延续的支持是作为编译器插件实现的。您可以使用编译器插件支持来实现此功能,如下所示。

val continuationsVersion = "1.0.3"

autoCompilerPlugins := true

addCompilerPlugin("org.scala-lang.plugins" % "scala-continuations-plugin_2.12.2" % continuationsVersion)

libraryDependencies += "org.scala-lang.plugins" %% "scala-continuations-library" % continuationsVersion

scalacOptions += "-P:continuations:enable"

特定版本编译器插件示例 

添加特定版本编译器插件可以按如下方式完成

val continuationsVersion = "1.0.3"

autoCompilerPlugins := true

libraryDependencies +=
    compilerPlugin("org.scala-lang.plugins" % ("scala-continuations-plugin_" + scalaVersion.value) % continuationsVersion)

libraryDependencies += "org.scala-lang.plugins" %% "scala-continuations-library" % continuationsVersion

scalacOptions += "-P:continuations:enable"