为SBT 1.x选择基于跨Scala版本的SBT插件版本

时间:2019-06-02 02:50:33

标签: scala build sbt

有什么方法可以根据当前的交叉构建版本来检查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())

0 个答案:

没有答案