Build.scala,% und %% Symbole Bedeutung


155

Ich bin neu zu spielen! Framework 2.1 (Java-Version) und haben keine Erfahrung mit Scala. Ich verstehe nicht, was in Build.scala ist und was bedeutet %und %%bedeutet. Ich googelte über sie, konnte aber ihre Bedeutung nicht finden.

In meiner Build.scala-Datei habe ich:

"org.hibernate" % "hibernate-entitymanager" % "4.1.0.Final",
"com.typesafe" %% "play-plugins-mailer" % "2.1"

Warum verwendet die erste Zeile ein einzelnes% -Symbol und die zweite zwei Prozentzeichen %%? Wofür sind sie?

Antworten:


184

Aus der offiziellen Dokumentation:

http://www.playframework.com/documentation/2.1.1/SBTDependencies

Die richtige Scala-Version mit %%

Wenn Sie groupID %% artifactID % revisionanstelle von groupID % artifactID % revision(der Unterschied ist das Doppelte %%nach dem groupID) verwenden, fügt SBT dem Artefaktnamen die Scala-Version Ihres Projekts hinzu. Dies ist nur eine Abkürzung.

Sie könnten dies schreiben ohne %%:

val appDependencies = Seq(
  "org.scala-tools" % "scala-stm_2.9.1" % "0.3"
)

Angenommen, das scalaVersionfür Ihren Build ist 2.9.1, ist Folgendes identisch:

val appDependencies = Seq(
  "org.scala-tools" %% "scala-stm" % "0.3"
)

Wie Sie oben sehen können, müssen Sie bei Verwendung %%nicht die Version angeben.


2
"Scala-Version Ihres Projekts" bedeutet den Wert des SettingKey scalaVersion.
Gordon Gustafson

4
Ich glaube nicht, dass für meine zusätzliche Frage eine separate SO-Frage erforderlich ist: Wann möchte ich %% nicht verwenden? Für mich sieht es so aus, als wäre es "besser" und sollte immer verwendet werden ...
Peter Perháč

10
@ PeterPerháč können Sie nicht %%mit Artefakten verwenden, die keine Scala-Version enthalten (z. B. reine Java-Bibliotheken).
Toxaris

25

Dies ist Teil von SBT, das Play als Build-Tool verwendet. Insbesondere ist dies eine Importanweisung.

Das Prozentzeichen %ist eine Methode zum Erstellen von Abhängigkeiten. Das doppelte Prozentzeichen %%fügt die aktuelle Scala-Version ein. Auf diese Weise erhalten Sie die richtige Bibliothek für die von Ihnen ausgeführte Scala-Version. Dies soll verhindern, dass Sie Ihre Build-Datei ändern müssen, wenn Sie Scala aktualisieren.

Weitere Informationen hier

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.