如何告诉SBT或Scala-cli使用Scala 2.12或2.13的夜间构建?

bnlyeluc  于 2022-11-09  发布在  Scala
关注(0)|答案(1)|浏览(201)

我想针对最新的尖端Scala2夜间游戏来测试我的代码。
This old answer不再起作用。
我做什么好?

cigdeys3

cigdeys31#

Scala 2.12或2.13

快速版(SBT)

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

对于2.12夜间版本,例如用2.12.18替换2.13.10;无论是哪种情况,它都是该分支上Next版本的版本号
对于abcd123,手动替换最新绿色版本on the 2.13.x or 2.12.x branch on Travis-CI的SHA的前7个字符。
找到当前每晚的完整版本号的一种快捷方法是使用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可以工作,compilerun等所有其他scala-cli子命令也可以工作。它还可以与脚本本身中的//>指令一起使用,例如:

//> using scala "3.nightly"

详细说明

Scala团队不再发布-SNAPSHOT版本的Scala。(重新开始可能是对社区的贡献;参见this ticket。)
但该团队确实每晚发布版本,每个版本都有自己的固定版本号。每晚的版本号类似于2.13.1-bin-abcd123。(-bin-标志着对SBT的二进制兼容;从2.13.0开始的所有2.13.x版本都是相互兼容的。)
过去基于Jenkins的答案不再适用,因为我们(在2018年)将《夜生活》的出版从Jenkins转移到了特拉维斯-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中,手动替换包含最后提交的7个字符的SHA的版本号。查看https://travis-ci.org/scala/scala/branches,您将在2.13.x(或2.12.x)部分的右上角看到SHA。例如:

2.13.1一发布,夜间的版本号就会跳到2.13.2,以此类推。
如果有多项目生成,请确保在修改生成定义时跨所有项目设置这些设置。或者,您可以使用++2.13.1-bin-abcd123(SBT 0.13.x)或++2.13.1-bin-abcd123!(SBT 1.x;添加的感叹号是强制使用crossScalaVersions中未包含的版本所必需的)在SBT外壳中临时设置它们。
理想情况下,我们会建议一种自动方式来向Travis-CI索要正确的SHA。这可能是通过Travis-CI的API实现的,但(据我所知)还没有人研究过它。(有志愿者吗?)
请注意,我们非正式地将这些“夜间”构建称为“夜间”构建,但从技术上讲这是一个用词不当的说法。每一个合并后的公关都有一个所谓的“夜间”。

Scala 2.11

没有进一步发布2.11.x的计划,所以我们(Lightend的Scala团队)也不再发布2.11夜间新闻了。

相关问题