Не указывать версию в 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()?

2 ответа

Решение

tl;dr Нет. Нет возможности оставить версию выключенной. Это часть sbt.ModuleID,

Однако вы можете использовать latest.integration или же latest.milestone чтобы не указывать версию явно. Айви и, следовательно, SBT позаботятся о том, чтобы "выбрать последнюю версию, являющуюся вехой или выпуском".

Вы также можете обратиться к моему ответу на аналогичный вопрос о плагине sbt-idea.

Плагин sbt - это просто еще одна библиотека для вашей сборки https://github.com/sbt/sbt/blob/0.13/main/src/main/scala/sbt/Defaults.scala

А для библиотеки у вас есть правила разрешения плюща

Ревизия плюща
Ревизия в groupID % artifactID % revision не обязательно должна быть одной фиксированной версией. Плющ может выбрать последнюю версию модуля в соответствии с указанными вами ограничениями. Вместо фиксированной ревизии, такой как "1.6.1", вы указываете "latest.integration", "2.9. +" Или "[1.0,)". Подробности смотрите в документации по версиям Ivy.

с http://www.scala-sbt.org/release/docs/Getting-Started/Library-Dependencies.html

Другие вопросы по тегам