问题 有没有办法在build.sbt中定义所需的sbt版本?


在Scala项目的build.sbt定义中,是否可以定义构建项目所需的最低版本的sbt?


12840
2018-02-10 10:12


起源

您在build.properties中定义sbt版本。最低版本是什么意思?任何大于最低版本的版本都可以吗? - mohit
@mohit是的,这是正确的。 - Bar


答案:


project/build.properties 允许您强制sbt使用特定版本。如果安装的sbt的当前版本不同 - sbt本身将下载(如果需要)您在那里指定的版本:

sbt.version=0.12.0

看到, 你好 例如。所以实际上你可能已经在你的系统中安装了几个版本的sbt - 它只是放入的jar .sbt/boot/scala-{scala.version required by this sbt}/org.scala-sbt/sbt/{sbt.version} 夹。 Sbt可执行文件实际上查找指定的版本 project/build.properties 或(如果未指定)系统中安装的最高版本。

附:从 sbt-launcher 透视,sbt只是一个与非小相交的小依赖 ansi.jar,所以指定版本的范围,如 [0.13.1, 0.13.8] 没有多大意义,因为只有对于相互矛盾的传递deps才有意义。否则就足以指定更高版本(可以编译) - 你甚至可以选择你已经拥有的某个版本(并以这种方式更新项目的sbt)。


16
2018-02-10 10:21



好的,所以我可以指定一个特定的版本但不是“大于”,这是正确的吗? - Bar
是。这里没有任何意义,因为你可以在计算机上自动拥有任何版本的sbt。如果你真的需要更好的+异常 - 你可以在里面手动检查它 build.sbt 通过分析 sbtVersion.value,但这对于sbt来说不是一种非常规的方式。 - dk14
大于实际上是好的。如果您打算使用0.13.6中引入的语法,那么表示所需的最小版本为0.13.6会很好,但是如果您使用的是0.13.7就可以了(即,它是没必要下载0.13.6)。 - Jun-Dai Bates-Kobashigawa
@ Jun-Dai Bates-Kobashigawa如果语法在0.13.7中再次改变,它实际上可能不太好 - dk14
@ Jun-Dai Bates-Kobashigawa可能是另一个sbt版本,它只是一个简单的依赖项,下载它相对便宜(特别是如果你的项目中有其他几个依赖项)。对于非常罕见的离线情况 - 没有什么可以阻止你直接指定0.13.7 - 它就像“我同意向后兼容性风险”,它对项目本身有好处,因为它意味着sbt版本已更新:) - dk14