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"

Continuations 外掛程式範例 

對 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"