我在库依赖项中有一个编译器插件,想启用它。就像是
autoCompilerPlugins := true
libraryDependencies += compilerPlugin(update.value.allModules.find(_.name contains "continuations-plugin").get)
scalacOptions += "-P:continuations:enable"
给
/Users/luc/scala/release-sanity-check/build.sbt:20: error: A setting cannot depend on a task
libraryDependencies += compilerPlugin(update.value.allModules.find(_.name contains "continuations-plugin").get)
^
我可以执行自定义任务吗?
val addContinuationsPlugin = taskKey[Unit]("Add continuations plugin")
addContinuationsPlugin := {
val plugin = update.value.allModules.find(_.name contains "continuations-plugin")
// add plugin?
}
有问题的存储库:https : //github.com/scala/scala-dist-smoketest
您可能想要这样的东西(请参阅sbt API)
scalacOptions ++= {
val compileConfig = update.value.configurations.find(_.configuration == "compile").get
val pluginModule = compileConfig.modules.find(_.module.name contains "continuations-plugin").get
val pluginFile = pluginModule.artifacts.head._2
Seq(s"-Xplugin:${pluginFile.getCanonicalPath}", "-P:continuations:enable")
}
当您使用Ivy解析插件时,compilePlugin方法旨在简化任务,并且可以正确执行。
选项#2试图确保它们是compiler-plugin->compiler-plugin
您的项目与您在其中发现延续插件的项目(最终会有一个compiler-plugin->default(compile)
链接)之间的传递配置依赖链。但是,在没有看到依赖树的情况下,我无法建议选项2(这是更可靠的方法)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句