Signification des symboles Build.scala,% et %%

155

Je suis nouveau sur Play! Framework 2.1 (version java) et n'ont aucune expérience avec scala. Je ne comprends pas ce que sont et ce que fait %et %%signifie dans Build.scala. J'ai cherché sur Google mais je n'ai pas trouvé leur signification.

Dans mon fichier Build.scala, j'ai:

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

Pourquoi la première ligne utilise un seul symbole% et la seconde utilise deux symboles pour cent %%? À quoi servent-ils?

Franco
la source

Réponses:

184

De la documentation officielle:

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

Obtenir la bonne version de Scala avec %%

Si vous utilisez groupID %% artifactID % revisionau lieu de groupID % artifactID % revision(la différence est le double %%après le groupID), SBT ajoutera la version Scala de votre projet au nom de l'artefact. Ceci est juste un raccourci.

Vous pouvez écrire ceci sans %%:

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

En supposant que scalaVersionpour votre build est 2.9.1, ce qui suit est identique:

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

Comme vous pouvez le voir ci-dessus, si vous utilisez %%, vous n'avez pas à spécifier la version.

Mingyu
la source
2
«La version Scala de votre projet» signifie la valeur de la clé de réglage scalaVersion.
Gordon Gustafson
4
ne pensez pas que poser une question SO distincte est nécessaire pour ma question supplémentaire: quand est-ce que je ne voudrais pas utiliser %%? Pour moi, il semble que c'est `` mieux '' et devrait toujours être utilisé ...
Peter Perháč
10
@ PeterPerháč vous ne pouvez pas utiliser %%avec des artefacts qui ne contiennent pas de version Scala (comme les bibliothèques Java pures).
Toxaris
25

Cela fait partie de SBT que le jeu utilise comme outil de construction. Plus précisément, il s'agit d'une déclaration d'importation.

Le symbole de pourcentage %est en fait une méthode utilisée pour créer des dépendances. Le double signe de pourcentage %%injecte la version actuelle de Scala - cela vous permet d'obtenir la bibliothèque correcte pour la version de scala que vous exécutez. Ceci afin d'éviter d'avoir à modifier votre fichier de construction lorsque vous mettez à jour Scala.

Plus d'informations ici

Boris l'araignée
la source