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