2013-07-04 29 views
92

Sono nuovo per giocare! Framework 2.1 (versione java) e non ha esperienza con scala. Non capisco cosa sono e cosa significa % e %% in Build.scala. Ho cercato su Google ma non ho trovato il loro significato.Build.scala,% e %% simboli 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 linea utilizza un unico simbolo% e la seconda usa due simboli di percentuale %%? A cosa servono?

risposta

114

Dalla documentazione ufficiale:

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

Ottenere la giusta versione di Scala con %%

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

Si potrebbe scrivere questo senza l'%%:

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

assumendo la scalaVersion per la build è 2.9.1, il seguente è identico:

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

Come potete vedere qui sopra, se si utilizzare %%, non è necessario specificare la versione .

+1

"La versione Scala del progetto" indica il valore di SettingKey 'scalaVersion'. –

+1

non pensare che sollevare una domanda SO separata sia necessaria per la mia domanda aggiuntiva: quando dovrei _non_ voler usare %%? Per me sembra che sia "migliore" e dovrebbe essere usato sempre .... –

+3

@ PeterPerháč non puoi usare '%%' con artefatti che non contengono una versione di Scala (come le librerie Java pure). – Toxaris

17

Questa è una parte di SBT che viene utilizzata come strumento di creazione. In particolare questa è una dichiarazione di importazione.

Il simbolo percentuale % è in realtà un metodo utilizzato per creare dipendenze. Il doppio segno di percentuale %% inietta la versione corrente di Scala: ciò consente di ottenere la libreria corretta per la versione di scala in esecuzione. Questo per evitare di dover modificare il file di build quando si aggiorna Scala.

Maggiori informazioni here

Problemi correlati