我有一个sbt-plugin,用于更新scalac选项以添加编译器插件。随着Scala 2.11的发布,我需要根据用户项目中使用的scala版本更改编译器插件的版本。
我知道SBT本身无论如何使用2.10,所以我认为我的sbt-plugin应该只用2.10编译。
但是,我在运行时更改了传递给build的compile-plugin的版本。目前我这样做:
val instrumentSettings: Seq[Setting[_]] = { Seq(
libraryDependencies += "group" %% "artifact" % "version % "scope,
) }
这是正确的做法吗?我只有一个sbt-plugin版本(2.10)并且它试图在运行时找到正确的编译器插件版本(2.10或2.11)。
另外sbt-plugin本身使用编译器插件,所以我在build.sbt中将其声明为普通依赖项。在这种情况下,sbt-plugin只会使用2.10版本?
答案 0 :(得分:1)
我不太清楚实际问题是什么,但我想到了一些想法:
scalacOptions
的jar。 sbt能够通过声明“插件”配置的库依赖性来为您管理。见Compiler Plugin Support。所以这样的事情应该有效:
val instrumentSettings: Seq[Def.Setting[_]] = Seq(
libraryDependencies += "com.example" %% "foo_plugin" % "0.1.0" % "plugin",
scalacOptons += ("-Pfoo:base-directory:" + (scalaSource in Compile).value.getAbsolutePath)
)