有什么方法可以根据当前的交叉构建版本来检查SBT插件的版本吗?我的用例是我有一个项目要与wartremover
一起使用,但是我想从2.10.x交叉编译到2.13.x。不幸的是,前者的最新发布版本是2.3.x
,而后者的最早发布版本是2.4.x
。
我尝试将以下内容放到plugins.sbt
中,但是没有用;在我看来,scalaVersion
在解决时总是2.12
,哪个IIUC是sbt本身的Scala版本?
libraryDependencies += {
val sbtV = (sbtBinaryVersion in pluginCrossBuild).value
val scalaV = (scalaBinaryVersion in update).value
scalaVersion.value match {
case v if v.startsWith("2.13") =>
sbt.Defaults.sbtPluginExtra("org.wartremover" % "sbt-wartremover" % "2.4.2", sbtV, scalaV)
case _ =>
sbt.Defaults.sbtPluginExtra("org.wartremover" % "sbt-wartremover" % "2.3.5", sbtV, scalaV)
}
}
基于this answer,我还尝试了以下操作(弃用了<++=
),但它也没有起作用(似乎未加载插件,给了我{{1} }未找到错误)
wartremoverErrors
这听起来有些多余/类似,但请记住,我是在严格询问插件(resolvers.appendN(scalaVersion {
case v if v.startsWith( "2.13" ) =>
addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.4.2")
Nil
case _ =>
addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.3.5")
Nil
}, SourcePosition.fromEnclosing())
)