scala - 如何在 SBT 中选择性地添加编译器插件
问题描述
我有一个依赖于https://github.com/typelevel/kind-projector的项目,目前正在针对 scala 2.12 和 2.13 进行交叉编译,我想添加对 scala 3.0 的支持。但是,kind-projector 在 scala 3.0 上不可用,因为它启用的语法是本机 scala 3 语法的一部分。
之前,我使用此设置添加编译器插件:
addCompilerPlugin("org.typelevel" % "kind-projector" % "0.11.3" cross CrossVersion.full)
scalaVersion
现在,如果是 3.0.0 ,我正在尝试禁用该设置。
我最接近的是
Def.setting {
scalaVersion.value match {
case "3.0.0" => new Def.SettingList(Nil)
case _ => Seq(
addCompilerPlugin("org.typelevel" % "kind-projector" % "0.11.3" cross CrossVersion.full)
)
}
}
但类型不起作用(这是 aInitialize
但它必须是 a Setting
)。
如何根据 scala 版本有条件地禁用编译器插件?
解决方案
addCompilerPlugin
是一个捷径libraryDependencies += compilerPlugin(dependency)
因此,它应该与这样的东西一起使用
libraryDependencies ++= {
scalaVersion.value match {
case "3.0.0" =>
Nil
case _ =>
List(compilerPlugin("org.typelevel" % "kind-projector" % "0.11.3" cross CrossVersion.full))
}
}
不过,可能有更好的方法来做到这一点。
原始答案不起作用,因为scalaVersion.value
在这种情况下不可用:
scalaVersion.value match {
case "3.0.0" =>
new Def.SettingList(Nil)
case _ =>
addCompilerPlugin("org.typelevel" % "kind-projector" % "0.11.3" cross CrossVersion.full)
}
推荐阅读
- node.js - 如何避免从我的电报机器人收到重复的回复?
- javascript - 引用日历对象
- javascript - 将 Three.js 作为模块导入时出现问题 - 出现未捕获的 SyntaxError:
- python-3.x - 使用网格搜索调整模型
- assembly - TASM - 无法识别的参数
- javascript - For Loop SetTimeout 仅工作 1 次
- python - 熊猫数据框 - 来自其他帧的累积频率添加
- vega - 在 vega lite 中访问数组
- android - 从 Flutter 请求 ASP.Net Core 3.0 的错误请求 400
- r - 季度到每周数据的插值