Есть ли способ определить версию плагина 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
)