2014-09-15 12 views
6

von einigen sbt Dokument (zB scopes), ich sehe:Unterschied von `{.}/*: Name` und` */*: name` in sbt?

{.}/*:name 

bedeutet name in entire build (verwenden name in ThisBuild es zu definieren)

*/*:name 

bedeutet name in global project (name in Global es zu definieren, verwenden)

(PS: Ich ignorierte die Konfig Teil *:)

Aber ich weiß immer noch nicht, was der Unterschied zwischen ihnen ist, sie scheinen mir genau gleich zu sein.

Gibt es etwas, das ich mit einem statt einem anderen tun kann?

+0

Ich habe diese Frage gelesen, aber immer noch nicht klar: http://stackoverflow.com/questions/18289766/what-is-the-difference-between-thisbuild-and-global-scopes – Freewind

Antwort

2

Die von Ihnen in ThisBuild angegebene Version wird auf alle Projekte in Ihrem Build angewendet und überschreibt alles, was möglicherweise in Global definiert wurde.

Zum Beispiel: Key "Version"

Für den Geschäftsbereich Global Umfang es in Defaults.scala mit dem Wert "0,1-snapshot" definiert wurde.

für Ihre Projekte in diesem Build Sie könnten überschrieben werden soll, dass mit:

version in ThisBuild := "3.0.1" 

Also, da [/ * {.}: Version] hat Vorrang vor [*/*: Version], wenn Sie Wenn Sie in Ihren Projekten "Version" erhalten, holen Sie "3.0.1" statt "0.1-SNAPSHOT".

Dies erklärt ziemlich viel den Unterschied und wie Sie das eine und nicht das andere verwenden könnten.

+1

So 'Global' hat größerer Bereich als 'ThisBuild', weil es ein Standardwert für verschiedene Builds sein kann (zB definiert in sbt, oder in einem sbt-Plugin), aber' ThisBuild' ist nur ein Referenz-Build und kann den globalen Standardwert überschreiben? – Freewind

+0

Warum sollte man in Global und ThisBuild unterschiedliche Werte haben? –

+0

Ich hatte es auch schwer, dies zu verstehen, aber sobald erwähnt wurde, dass ein Plugin einige Einstellungen im globalen Bereich definieren kann, wurde es für mich klarer. Abgesehen von Plugins sehe ich keine Anwendungsfälle für die Verwendung von Global vs ThisBuild. –