【发布时间】:2017-03-30 02:31:26
【问题描述】:
【问题讨论】:
标签: scala sbt nightly-build
【问题讨论】:
标签: scala sbt nightly-build
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,手动替换最新绿色版本on the 2.13.x or 2.12.x branch on Travis-CI的SHA的前7个字符。
在 scala-cli 0.1.2 或更高版本上,您可以通过以下方式获得 2.13 nightly:
scala-cli repl -S 2.nightly
如果您想要每晚最新的 2.12,您必须自己提供版本号(请参阅上面有关如何确定它的说明)并指定解析器:
scala-cli repl -S 2.12.16-bin-abcd123 \
--repository https://scala-ci.typesafe.com/artifactory/scala-integration
当然,不仅repl 有效,其他 scala-cli 子命令也有效。
Scala 团队不再发布 -SNAPSHOT 版本的 Scala。 (重新开始可能是社区贡献;请参阅this ticket。)
但团队确实会发布每晚的构建,每个构建都有自己的固定版本号。每晚的版本号看起来像例如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 repository 中最后一次提交的 7 字符 SHA 的版本号,为此发布了夜间构建。查看https://travis-ci.org/scala/scala/branches,您会在 2.13.x(或 2.12.x)部分的右上角看到 SHA。例如:
2.13.1一出,nightly里的版本号就会涨到2.13.2,以此类推。
如果您有一个多项目构建,请确保在修改构建定义时在所有项目中设置这些设置。或者,您可以使用++2.13.1-bin-abcd123 (sbt 0.13.x) 或++2.13.1-bin-abcd123! (sbt 1.x) 在 sbt shell 中临时设置它们;添加的感叹号是强制使用crossScalaVersions 中未包含的版本所必需的)。
理想情况下,我们会建议一种自动方式来向 Travis-CI 询问正确的 SHA。这大概可以通过 Travis-CI 的 API 实现,但是(据我所知)还没有人研究过。 (有志愿者吗?)
请注意,我们非正式地将这些称为“夜间”构建,但从技术上讲,这是用词不当。为每个合并的 PR 构建所谓的“夜间”。
没有进一步发布 2.11.x 的计划,因此我们(Lightbend 的 Scala 团队)也不再发布 2.11 nightlies。
【讨论】:
CrossVersion.patch,当您使用它时,您不妨使用 scalaOrganization.value 来获得 Typelevel Scala 兼容性也是。
org.scala-js#scalajs-compiler_2.12.8-bin-ebf8017;0.6.25: not found 的错误消息,一种解决方案(对我有用)是:libraryDependencies := libraryDependencies.value.filterNot(_.name == "scalajs-compiler"), addCompilerPlugin("org.scala-js" % "scalajs-compiler_2.12.7" % "0.6.25"),
"foolib" %% "1.2.3"替换为"foolib_2.12.7" % "1.2.3",这会产生由完整Scala版本发布的任何内容,通常是编译器插件(Scala.js,宏天堂等)