scala sbt nightly-build

¿Cómo le digo a sbt que use una compilación nocturna de Scala 2.11, 2.12 o 2.13?



nightly-build (1)

Quiero probar mi código con la última versión de Scala.

La respuesta para Scala 2.10 ya no funciona.

¿Qué debo hacer?


Rápidamente :

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

en la segunda línea, sustituya el número de versión de Jenkins ( 2.13 , 2.12 , 2.11 )

Versión más larga:

El equipo de Scala ya no publica -SNAPSHOT versiones -SNAPSHOT de Scala. (Empezar de nuevo podría ser una contribución de la comunidad, vea este ticket ).

Pero el equipo publica versiones nocturnas, cada una con su propio número de versión fijo. El número de versión de cada noche se ve, por ejemplo, 2.12.1-bin-abcd123 . ( -bin- señala que la compatibilidad binaria con el sbt. 2.13 aún no ha estabilizado la compatibilidad binaria, por lo que las versiones tienen -pre- lugar de -bin- ).

Para decirle a sbt que use uno de estos nightlies, debes hacer tres cosas.

Primero, agregue el resolver donde se guardan los nightlies:

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

Segundo, especifique la versión de Scala:

scalaVersion := "2.12.2-bin-abcd123"

Pero ese no es un número de versión real. Sustituya un número de versión que contenga el SHA de 7 caracteres de una confirmación en el repositorio scala / scala para el que se publicó una compilación nocturna. Puede buscar la versión publicada más reciente mirando aquí: 2.13 o 2.12 o 2.11 ).

Si tiene una compilación multiproyecto, asegúrese de establecer estas configuraciones en todos los proyectos. Si los configura de forma interactiva en el shell sbt, ++2.12.2-bin-abcd123 hace el truco.

Apéndice:

Si no quiere meterse con la búsqueda de un número de versión, y si no le importa hacer que su construcción no sea reproducible, puede poner esto en su build.sbt :

resolvers += "scala-integration" at "https://scala-ci.typesafe.com/artifactory/scala-integration/" scalaVersion := { val url = "https://scala-ci.typesafe.com/job/scala-2.12.x-integrate-bootstrap/lastSuccessfulBuild/artifact/jenkins.properties/*view*/" val props = new java.util.Properties props.load(new URL(url).openStream) props.getProperty("version") }

Guardo esto en un proyecto de sbt vacío, en una ubicación conveniente, así que siempre puedo ejecutar rápidamente la sbt console allí para probar algo en un REPL de última hora.