2014-09-15 19 views
6

(örn scopes), görüyorum:Sbt’de `{.}/*: Name` ve` */*: name` arasındaki fark nedir? Bazı sbt dokümandan

{.}/*:name 

demektir entire build yılında name

*/*:name 

global project içinde name (bunu tanımlamak için name in Global kullanın) anlamına gelir (tanımlamak için name in ThisBuild kullanın)

(PS: Yapılandırma bölümü *:)

Ama hala aralarındaki farkın ne olduğunu bilmiyorum, tam olarak aynı görünüyorlar.

Bir diğeri yerine biriyle yapabileceğim bir şey var mı? BuBuild'de belirttiğiniz sürüm, yapınızdaki tüm projelere uygulanacak ve Global'de tanımlanmış olan her şeyi geçersiz kılacaktır.

+0

Bu soruyu okudum, fakat hala net değil: http://stackoverflow.com/questions/18289766/what-is-the-difference-between-thisbuild-and-global-scopes – Freewind

cevap

2

Örneğin

: Anahtar "versiyonu" bu değer "0,1-SNAPSHOT" ile Defaults.scala tanımlanmıştır Küresel kapsam için

. Bu yapı içinde bir projeniz

üzerine yazmak isteyebilirsiniz ile:

version in ThisBuild := "3.0.1" 

Yani, çünkü [/ * {.}: sürüm] üzerinde önceliğe sahiptir [*/*: version], ne zaman sizi Projelerinizde "sürüm" elde ederseniz "0.1-SNAPSHOT" yerine "3.0.1" getirin.

Bu hemen hemen farkı açıklar ve diğerini kullanamazsınız.

+1

Yani 'Global', Farklı yapılarda (ör. sbt veya sbt eklentisinde tanımlanmış) varsayılan bir değer olabileceği için 'ThisBuild 'den daha büyük bir kapsamdır, ancak' ThisBuild' yalnızca geçerli yapılandırma referansıdır ve genel varsayılan değeri geçersiz kılabilir. – Freewind

+0

Küresel ve ThisBuild'de neden farklı değerler ister? –

+0

Bunu anlamakta da zor bir zaman geçirdim, ama bir kez daha bir eklentinin Küresel kapsamdaki bir alanı tanımlayabileceğinden bahsettiğimizde bana daha net geldi. Eklentiler dışında Global vs ThisBuild kullanımı için herhangi bir kullanım durumu göremiyorum. –