2014-09-15 14 views
6

Da qualche documento SBT (es scopes), vedo:Differenza da `{.}/*: Nome` e` */*: nome` in sbt?

{.}/*:name 

significa name in entire build (utilizzare name in ThisBuild definirla)

*/*:name 

significa name in global project (utilizzare name in Global definirla)

(PS: ho ignorato la parte config *:)

Ma, ancora non so qual è la differenza tra loro, sembrano esattamente la stessa cosa per me.

C'è qualcosa che posso fare con uno piuttosto che con un altro?

+0

Ho letto questa domanda, ma non è ancora chiaro: http://stackoverflow.com/questions/18289766/questo-è-differenza-dall'insieme-e-globale-scope – Freewind

risposta

2

Qualsiasi versione specificata in ThisBuild verrà applicata a tutti i progetti nella build, ignorando qualsiasi cosa sia stata definita in Global.

Ad esempio: "versione" Chiave

Per portata globale è stata definita in Defaults.scala con valore "0.1-SNAPSHOT".

Per i vostri progetti in questa build si potrebbe desiderare di sovrascrivere quello con:

version in ThisBuild := "3.0.1" 

Quindi, perché [/ * {.}: Versione] ha la precedenza su [*/*: versione], ogni volta che si ottieni "versione" nei tuoi progetti, recuperi "3.0.1" invece di "0.1-SNAPSHOT".

Questo spiega la differenza e il modo in cui è possibile utilizzare l'uno e non l'altro.

+1

Quindi 'Global' ha portata più ampia di 'ThisBuild', perché può essere un valore predefinito su diverse build (ad esempio definite in sbt o in un plug-in sbt), ma' ThisBuild' è solo una build di riferimento corrente e può sovrascrivere il valore predefinito globale? – Freewind

+0

Perché uno desidera valori diversi in Global e ThisBuild? –

+0

Ho anche avuto difficoltà a capirlo, ma una volta menzionato il fatto che un plugin può definire alcune impostazioni nello scope Globale mi è diventato più chiaro. A parte i plugin, non vedo alcun caso di utilizzo per l'utilizzo di Global vs ThisBuild. –

Problemi correlati