我如何告诉 sbt 或 scala-cli 使用每晚构建的 Scala 2.12 或 2.13?
How do I tell sbt or scala-cli to use a nightly build of Scala 2.12 or 2.13?
我想针对最新的前沿 Scala 2 nightlies 测试我的代码。
answer for Scala 2.10 不再有效。
我该怎么办?
Scala 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.16
对于 2.13.9
;在任何一种情况下,它都是该分支
上下一个版本的版本号
对于abcd123
,手动替换最新绿色构建的SHA的前7个字符on the 2.13.x or 2.12.x branch on Travis-CI。
查找当前 nightly 的完整版本号的一种快速方法是使用 scala-cli
,如下所示。
快速版 (scala-cli)
在 scala-cli 0.1.3 或更新版本上,您可以 运行 夜间使用:
scala-cli repl -S 2.12.nightly
scala-cli repl -S 2.13.nightly
scala-cli repl -S 2.nightly # same as 2.13.nightly
# Scala 3, too!
scala-cli repl -S 3.0.nightly
scala-cli repl -S 3.1.nightly
scala-cli repl -S 3.2.nightly
scala-cli repl -S 3.nightly # same as 3.2.nightly at present
当然,不仅 repl
有效,所有其他 scala-cli 子命令也有效,例如 compile
和 run
.
更长的解释
Scala 团队不再发布 -SNAPSHOT
个版本的 Scala。 (重新开始可能是社区贡献;参见 this ticket。)
但该团队确实会发布每晚构建的版本,每个版本都有自己的固定版本号。每晚的版本号看起来像例如2.13.1-bin-abcd123
。 (-bin-
表示与 sbt 的二进制兼容性;自 2.13.0 以来的所有 2.13.x 版本都相互二进制兼容。)
过去基于 Jenkins 的旧答案不再适用,因为我们(在 2018 年)将晚间新闻的发布从 Jenkins 移到了 Travis-CI。
要告诉 sbt 使用这些夜间活动之一,您需要做三件事。
首先,添加保存夜间活动的解析器:
Global / resolvers += "scala-integration" at
"https://scala-ci.typesafe.com/artifactory/scala-integration/"
其次,指定Scala版本:
scalaVersion := "2.13.1-bin-abcd123"
但这不是真正的版本号。在 scala/scala repository for which a nightly build was published. Look at https://travis-ci.org/scala/scala/branches 中手动替换包含最后一次提交的 7 个字符 SHA 的版本号,您将在 2.13.x(或 2.[=81)的右上角看到 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 构建一个所谓的“nightly”。
斯卡拉 2.11
没有进一步的 2.11.x 版本计划,所以我们(Lightbend 的 Scala 团队)也不再发布 2.11 nightlyes。
我想针对最新的前沿 Scala 2 nightlies 测试我的代码。
answer for Scala 2.10 不再有效。
我该怎么办?
Scala 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.16
对于 2.13.9
;在任何一种情况下,它都是该分支
对于abcd123
,手动替换最新绿色构建的SHA的前7个字符on the 2.13.x or 2.12.x branch on Travis-CI。
查找当前 nightly 的完整版本号的一种快速方法是使用 scala-cli
,如下所示。
快速版 (scala-cli)
在 scala-cli 0.1.3 或更新版本上,您可以 运行 夜间使用:
scala-cli repl -S 2.12.nightly
scala-cli repl -S 2.13.nightly
scala-cli repl -S 2.nightly # same as 2.13.nightly
# Scala 3, too!
scala-cli repl -S 3.0.nightly
scala-cli repl -S 3.1.nightly
scala-cli repl -S 3.2.nightly
scala-cli repl -S 3.nightly # same as 3.2.nightly at present
当然,不仅 repl
有效,所有其他 scala-cli 子命令也有效,例如 compile
和 run
.
更长的解释
Scala 团队不再发布 -SNAPSHOT
个版本的 Scala。 (重新开始可能是社区贡献;参见 this ticket。)
但该团队确实会发布每晚构建的版本,每个版本都有自己的固定版本号。每晚的版本号看起来像例如2.13.1-bin-abcd123
。 (-bin-
表示与 sbt 的二进制兼容性;自 2.13.0 以来的所有 2.13.x 版本都相互二进制兼容。)
过去基于 Jenkins 的旧答案不再适用,因为我们(在 2018 年)将晚间新闻的发布从 Jenkins 移到了 Travis-CI。
要告诉 sbt 使用这些夜间活动之一,您需要做三件事。
首先,添加保存夜间活动的解析器:
Global / resolvers += "scala-integration" at
"https://scala-ci.typesafe.com/artifactory/scala-integration/"
其次,指定Scala版本:
scalaVersion := "2.13.1-bin-abcd123"
但这不是真正的版本号。在 scala/scala repository for which a nightly build was published. Look at https://travis-ci.org/scala/scala/branches 中手动替换包含最后一次提交的 7 个字符 SHA 的版本号,您将在 2.13.x(或 2.[=81)的右上角看到 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 构建一个所谓的“nightly”。
斯卡拉 2.11
没有进一步的 2.11.x 版本计划,所以我们(Lightbend 的 Scala 团队)也不再发布 2.11 nightlyes。