Выбор версии плагина SBT на основе кросс-версии Scala для SBT 1.x - PullRequest
0 голосов
/ 02 июня 2019

Есть ли способ определить версию плагина SBT на основе текущей версии кросс-сборки?Мой пример использования: у меня есть проект, с которым я хотел бы использовать wartremover, но я хочу выполнить кросс-компиляцию с 2.10.x до 2.13.x.К сожалению, последняя опубликованная версия для первого - 2.3.x, в то время как самая ранняя опубликованная версия для последнего - 2.4.x.

Я попытался поместить следующее в plugins.sbt, но это не сработало;мне кажется, что scalaVersion во время разрешения всегда 2.12, какая IIUC является версией Scala для самого sbt?

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)
  }
}

На основании этого ответа Я также пыталсяследующее (обходится <++= устарело), ​​но оно также не работает (похоже, что плагин не был загружен, давая мне 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())

Это может звучатьизбыточный / похожий на некоторые другие вопросы, но, пожалуйста, имейте в виду, я строго спрашиваю о плагин s (plugins.sbt)

...