[FIXED] Wie sage ich sbt oder scala-cli, dass es einen nächtlichen Build von Scala 2.12 oder 2.13 verwenden soll?

Ausgabe

Ich möchte meinen Code mit den neusten Scala 2 Nightlies testen.

Diese alte Antwort funktioniert nicht mehr.

Was kann ich tun?

Lösung

Scala 2.12 oder 2.13

Schnellversion (sbt)

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

für eine 2.12 Nacht ersetzen Sie z. B. 2.12.18für 2.13.10; in beiden Fällen ist es die Versionsnummer der nächsten Veröffentlichung auf diesem Zweig

Ersetzen Sie für abcd123, manuell die ersten 7 Zeichen des SHA des neuesten grünen Builds im 2.13.x- oder 2.12.x-Zweig auf Travis-CI .

Eine schnelle Möglichkeit, die vollständige Versionsnummer eines aktuellen Nightly herauszufinden, ist die Verwendung von scala-cli, wie folgt.

Schnellversion (scala-cli)

Auf Scala-Cli 0.1.3 oder neuer können Sie Nightlies ausführen mit:

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

Funktioniert natürlich nicht nur repl, sondern auch alle anderen Scala-Cli-Unterbefehle wie compileund run. Es funktioniert auch mit //>Direktiven in Ihrem Skript selbst, zum Beispiel:

//> using scala "3.nightly"

längere Erklärung

Das Scala-Team veröffentlicht keine -SNAPSHOTVersionen von Scala mehr. (Damit wieder anzufangen, könnte ein Community-Beitrag sein; siehe dieses Ticket .)

Aber das Team veröffentlicht nächtliche Builds mit jeweils einer eigenen festen Versionsnummer. Die Versionsnummer eines Nightly sieht zB so aus 2.13.1-bin-abcd123. ( -bin-signalisiert Binärkompatibilität zu sbt; alle 2.13.x-Releases seit 2.13.0 sind untereinander binärkompatibel.)

Die alte Jenkins-basierte Antwort, die früher hier war, funktioniert nicht mehr, seit wir (2018) die Veröffentlichung von Nachtbüchern von Jenkins auf Travis-CI verschoben haben.

Um sbt anzuweisen, eines dieser Nightlies zu verwenden, müssen Sie drei Dinge tun.

Fügen Sie zuerst den Resolver hinzu, in dem die Nightlies aufbewahrt werden:

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

Zweitens geben Sie die Scala-Version an:

scalaVersion := "2.13.1-bin-abcd123"

Aber das ist keine echte Versionsnummer. Ersetzen Sie manuell eine Versionsnummer, die den 7-stelligen SHA des letzten Commits im scala/scala-Repository enthält , für das ein nächtlicher Build veröffentlicht wurde. Schauen Sie auf https://travis-ci.org/scala/scala/branches und Sie sehen den SHA in der oberen rechten Ecke des Abschnitts 2.13.x (oder 2.12.x). Zum Beispiel:

Geben Sie hier die Bildbeschreibung ein

Sobald 2.13.1 veröffentlicht wird, wird die Versionsnummer im Nightly auf 2.13.2 steigen und so weiter.

Wenn Sie über einen Multiprojekt-Build verfügen, stellen Sie sicher, dass Sie diese Einstellungen für alle Projekte festlegen, wenn Sie Ihre Build-Definition ändern. Oder Sie können sie vorübergehend in der sbt-Shell mit ++2.13.1-bin-abcd123(sbt 0.13.x) oder ++2.13.1-bin-abcd123!(sbt 1.x; das hinzugefügte Ausrufezeichen ist erforderlich, um die crossScalaVersionsVerwendung einer nicht enthaltenen Version zu erzwingen).

Idealerweise würden wir einen automatisierten Weg vorschlagen, um Travis-CI nach dem richtigen SHA zu fragen. Dies ist vermutlich über die API von Travis-CI möglich, aber (meines Wissens) hat sich noch niemand damit befasst. (Gibt es einen Freiwilligen?)

Beachten Sie, dass wir diese „nächtlichen“ Builds informell nennen, aber technisch ist es eine falsche Bezeichnung. Für jeden zusammengeführten PR wird ein sogenanntes „Nightly“ gebaut.

Skala 2.11

Es sind keine weiteren 2.11.x-Releases geplant, daher veröffentlichen wir (das Scala-Team bei Lightbend) auch keine 2.11-Nightlies mehr.


Beantwortet von –
Seth Tisue


Antwort geprüft von –
Dawn Plyler (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] Long zu HexString

Ausgabe Ich habe das folgende Scala-Snippet: someLong.formatted("%016x") Als Ergebnis erhalte ich den Hex-String. Ich musste jedoch die Scala-Version…