Возможно ли указать версию в 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