2014-09-15 1 views
6

(예 scopes을), I는 다음을 참조하십시오sbt의`{.}/* : name`과`*/* : name`과의 차이점은 무엇입니까? 일부 SBT 문서에서

{.}/*:name 

의미 entire build에서 name

*/*:name 

global project에서 name을 (를 정의 할 name in Global 사용)을 의미합니다 (그것을 정의하는 name in ThisBuild 사용)

(PS : 구성 부분을 무시했습니다. *:)

그러나 나는 아직도 그들 사이의 차이점이 무엇인지 모릅니다. 그들은 정확히 똑같은 것처럼 보입니다.

내가 할 수있는 일이 다른 것보다 하나가 있습니까?

+0

이 질문을 읽었지만 여전히 명확하지 않습니다. http://stackoverflow.com/questions/18289766/what-is-the-difference-between-thisbuild-and-global-scopes – Freewind

답변

2

ThisBuild에서 지정한 버전이 빌드의 모든 프로젝트에 적용되어 전역에서 정의 된 내용을 무시합니다. 예를 들어

: 키 "버전"값이 "0.1 SNAPSHOT"로 Defaults.scala에 정의 된 글로벌 범위의

. 이 빌드에 프로젝트의

덮어 할 수 있습니다 그게 :

version in ThisBuild := "3.0.1" 

그래서 때문에 [/ * {.} : 버전]보다 우선 순위가 [*/* 버전을, 때마다 당신을 프로젝트에서 "버전"을 얻으려면 "0.1-SNAPSHOT"대신 "3.0.1"을 가져옵니다.

이 점은 차이점과 다른 것을 사용하지 않는 방법에 대해 설명합니다.

+1

그래서 '글로벌'에는 'ThisBuild'는 다른 빌드 (예 : sbt 또는 sbt 플러그인에서 정의)에 따라 기본값이 될 수 있기 때문에 더 큰 범위 일 수 있습니다. 그러나 ThisBuild는 현재 참조 빌드이며 전역 기본값을 무시할 수 있습니까? – Freewind

+0

왜 Global 및 ThisBuild에서 다른 값을 원하나요? –

+0

나는 또한 이것을 이해하는 데 어려움을 겪었지만 일단 플러그인이 전체 범위의 일부 설정을 정의 할 수 있다고 언급되면 나에게 명확 해졌습니다. 플러그인 중 하나만 제외하고 ThisBuild를 사용하여 글로벌 사용 사례가 표시되지 않습니다. –

관련 문제