是否可以仅在编译测试源码时添加Scala编译器插件?
当通过调用SBT的addCompilerPlugin来添加编译器插件时,就会添加一个库依赖项。相关的方法如下:
/** Transforms `dependency` to be in the auto-compiler plugin configuration. */
def compilerPlugin(dependency: ModuleID): ModuleID =
dependency.withConfigurations(Some("plugin->default(compile)"))
/** Adds `dependency` to `libraryDependencies` in the auto-compiler plugin configuration. */
def addCompilerPlugin(dependency: ModuleID): Setting[Seq[ModuleID]] =
libraryDependencies += compilerPlugin(dependency)如果在编译测试源码时,有一个withConfigurations导致插件只在类路径上,那么问题就可以归结为。我尝试了Some("plugin->default(testCompile)"),但没有成功。
发布于 2020-07-15 00:44:34
回答我自己的问题:可以通过将autoCompilerPlugins设置为false并在测试配置中手动添加必要的-Xplugin=... Scalac选项来实现。这可以通过使用Classpaths.autoPlugins实用程序方法来完成。
在我的例子中,我只想在测试期间激活SemanticDB编译器插件。这可以通过以下SBT设置来实现:
autoCompilerPlugins := false,
ivyConfigurations += Configurations.CompilerPlugin,
scalacOptions in Test ++= Classpaths.autoPlugins(update.value, Seq(), ScalaInstance.isDotty(scalaVersion.value)),
scalacOptions in Test += "-Yrangepos",
scalacOptions in Test += "-P:semanticdb:text:on",https://stackoverflow.com/questions/62890985
复制相似问题