Возможно ли указать версию в addSbtPlugin?
Если я хочу включить плагин для sbt, я использую addSbtPlugin()
в plugins.sbt
. Поэтому, чтобы добавить плагин gen-idea, я бы использовал следующую строку:
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.0")
Увы, я должен явно указать версию 1.5.0
. Что делать, если я хочу использовать последнюю доступную версию, когда она станет доступной?
Когда я опускаю третий параметр, я получаю следующую ошибку:
C:\Users\JDearing\Documents\deleteme\LearningScala>sbt gen-idea
C:\Users\JDearing\.sbt\0.13\plugins\build.sbt:1: error: type mismatch;
found : sbt.impl.GroupArtifactID
required: sbt.ModuleID
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" )
^
[error] Type error in expression
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? q
Возможно ли избежать указания версии в addSbtPlugin()
?
Ответы
Ответ 1
tl; dr Нет. Невозможно оставить версию выключенной. Это часть sbt.ModuleID
.
Однако вы можете использовать latest.integration
или latest.milestone
, чтобы явно не указывать версию. Ivy и, следовательно, SBT позаботится о выборе последней версии, являющейся вехой или выпуском.
Вы также можете обратиться к моему ответу на аналогичный вопрос о плагине sbt-idea.
Ответ 2
Плагин sbt - это еще одна библиотека для вашей сборки
https://github.com/sbt/sbt/blob/0.13/main/src/main/scala/sbt/Defaults.scala#L1513
И для библиотеки у вас есть правила разрешения Ivy
Ivy ревизии
Пересмотр в версии groupID% artifactID% не должны быть единой фиксированной версией. Айви может выбрать последнюю пересмотр модуля в соответствии с указанными вами ограничениями. Вместо фиксированная ревизия типа "1.6.1", вы указываете "last.integration", "2.9. +" Или "[1.0,)". Подробнее см. В документации Ivy revisions.
от
http://www.scala-sbt.org/release/docs/Getting-Started/Library-Dependencies.html#ivy-revisions