19

我想根据最新的 Scala 2 nightlies 测试我的代码。

Scala 2.10的答案不再适用。

我该怎么办?

4

1 回答 1

31

斯卡拉 2.12 或 2.13

快速版本 (sbt)

Global / resolvers += "scala-integration" at
  "https://scala-ci.typesafe.com/artifactory/scala-integration/"
scalaVersion := "2.13.9-bin-abcd123"

对于 2.12 每晚,替换2.12.162.13.9; 无论哪种情况,它都是该分支上下一个版本的版本号

对于,手动替换Travis-CI 上 2.13.x 或 2.12.x 分支上abcd123最新绿色构建的 SHA 的前 7 个字符。

快速版本(scala-cli)

在 scala-cli 0.1.2 或更高版本上,您可以通过以下方式获得 2.13 nightly:

scala-cli repl -S 2.nightly

如果你想要最新的 2.12 nightly,你必须自己提供版本号(参见上面关于如何确定它的注释)并指定解析器:

scala-cli repl -S 2.12.16-bin-abcd123 \
  --repository https://scala-ci.typesafe.com/artifactory/scala-integration

当然,不仅repl可以,其他 scala-cli 子命令也可以。

更长的解释

Scala 团队不再发布-SNAPSHOTScala 版本。(再次开始可能是社区贡献;请参阅这张票。)

但该团队确实发布了每晚的构建,每个都有自己的固定版本号。nightly 的版本号如下所示2.13.1-bin-abcd123。(-bin-表示与 sbt 的二进制兼容性;自 2.13.0 以来的所有 2.13.x 版本都是二进制兼容的。)

过去基于 Jenkins 的旧答案不再适用,因为我们(在 2018 年)将 Nightlies 的出版从 Jenkins 转移到了 Travis-CI。

要告诉 sbt 使用其中一个 nightlies,你需要做三件事。

首先,添加保存 nightlies 的解析器:

Global / resolvers += "scala-integration" at
  "https://scala-ci.typesafe.com/artifactory/scala-integration/"

其次,指定Scala版本:

scalaVersion := "2.13.1-bin-abcd123"

但这不是真正的版本号。手动替换版本号,其中包含发布夜间构建的scala/scala 存储库中最后一次提交的 7 字符 SHA 。查看https://travis-ci.org/scala/scala/branches,您会在 2.13.x(或 2.12.x)部分的右上角看到 SHA。例如:

在此处输入图像描述

2.13.1一出,nightly里的版本号就会涨到2.13.2,以此类推。

如果您有一个多项目构建,请确保在修改构建定义时在所有项目中设置这些设置。或者,您可以在 sbt shell 中使用++2.13.1-bin-abcd123(sbt 0.13.x) 或++2.13.1-bin-abcd123!(sbt 1.x; 添加感叹号来强制使用未包含在其中的版本) 临时设置它们crossScalaVersions

理想情况下,我们会建议一种自动方式来向 Travis-CI 询问正确的 SHA。这大概可以通过 Travis-CI 的 API 实现,但是(据我所知)还没有人研究过。(有志愿者吗?)

请注意,我们非正式地将这些称为“夜间”构建,但从技术上讲,这是用词不当。为每个合并的 PR 构建一个所谓的“夜间”。

斯卡拉 2.11

没有进一步的 2.11.x 版本计划,所以我们(Lightbend 的 Scala 团队)也不再发布 2.11 nightlies。

于 2016-11-16T02:03:02.780 回答