不能在addSbtPlugin中指定版本吗?

时间:2013-09-04 15:08:38

标签: sbt

如果我想为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 个答案:

答案 0 :(得分:3)

sbt插件只是您构建的另一个库 https://github.com/sbt/sbt/blob/0.13/main/src/main/scala/sbt/Defaults.scala#L1513

对于图书馆,你有常春藤解决规则

  

常春藤修订版   groupID%artifactID%revision中的修订版本   不必是一个固定的版本。常春藤可以选择最新的   根据您指定的约束修改模块。代替   像“1.6.1”这样的固定版本,你指定“latest.integration”,   “2.9。+”或“[1.0,)”。有关详细信息,请参阅Ivy revisions文档。

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

答案 1 :(得分:1)

tl; dr 不。没有办法让版本关闭。它是sbt.ModuleID的一部分。

但是,您可以使用latest.integrationlatest.milestone来避免明确指定版本。常春藤和SBT将照顾"selecting the latest version being either a milestone or a release"

您也可以咨询my answer to a similar question about the sbt-idea plugin