Build.scala, significato dei simboli% e %%


155

Sono nuovo su Play! Framework 2.1 (versione java) e non ha esperienza con scala. Non capisco cosa siano, cosa significhi %e cosa %%significhi in Build.scala. Ho cercato su Google ma non sono riuscito a trovare il loro significato.

Nel mio file Build.scala ho:

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

Perché la prima riga usa un singolo simbolo% e la seconda usa due simboli percentuale %%? A cosa servono?

Risposte:


184

Dalla documentazione ufficiale:

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

Ottenere la versione Scala giusta con %%

Se si utilizza groupID %% artifactID % revisioninvece di groupID % artifactID % revision(la differenza è il doppio %%dopo il groupID), SBT aggiungerà la versione Scala del progetto al nome del manufatto. Questa è solo una scorciatoia.

Puoi scrivere questo senza il %%:

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

Supponendo che la scalaVersiontua build sia 2.9.1, il seguente è identico:

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

Come puoi vedere sopra, se lo usi %%, non devi specificare la versione.


2
"Versione Scala del progetto" indica il valore di SettingKey scalaVersion.
Gordon Gustafson,

4
non pensare che sia necessario sollevare una domanda SO separata per la mia domanda aggiuntiva: quando non vorrei usare %%? A me sembra che sia "migliore" e dovrebbe essere usato sempre ....
Peter Perháč

10
@ PeterPerháč non puoi usarlo %%con artefatti che non contengono una versione Scala (come pure librerie Java).
Toxaris,

25

Questo fa parte di SBT che il gioco usa come strumento di costruzione. In particolare questa è una dichiarazione di importazione.

Il simbolo percentuale %è in realtà un metodo utilizzato per creare dipendenze. Il doppio segno di percentuale %%inserisce l'attuale versione di Scala: ciò consente di ottenere la libreria corretta per la versione di scala in esecuzione. Questo per evitare di dover cambiare il tuo file di build quando aggiorni Scala.

Maggiori informazioni qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.