2011-12-21 7 views
2

は、私がこのような何かを行うことができる必要があることを意味すると思わ: ここでスコープ値を取得しないのはなぜですか?スコープの入門ガイドを探し

(Build.scalaは getting started guideからsampleKeyA/B/C/Dを有する場合)
sampleKeyA := "value 1" 

sampleKeyA in compile := "value 2" 

compile <<= (compile in Compile, sampleKeyA) map { (result, s) => 
    println("sample key: " + s) 
    result 
} 

しかし、私がsbtコンパイルを実行すると、sampleKeyAの値は "value 1"であり、 "value 2"ではありません。私は何が欠けていますか?

答えて

4

は、もちろん有効です。

sampleKeyAを使用しているため、の値は1になります。コンパイルのsampleKeyAに変更し、の値2を取得します。

だけで「空」のsbtセッションを開始し、次のコマンドを実行し、これを確認するには、次の

> set SettingKey[String]("sampleKeyA") := "value 1"   
[info] Reapplying settings... 
[info] Set current project to default-a57b70 (in build file:/Users/heiko/tmp/sbt/) 
> set SettingKey[String]("sampleKeyA") in compile := "value 2" 
[info] Reapplying settings... 
[info] Set current project to default-a57b70 (in build file:/Users/heiko/tmp/sbt/) 
> sampleKeyA             
[info] value 1 
> sampleKeyA(for compile)          
[info] value 2 
+0

私がコンパイルコマンドを実行しているということは、私が「コンパイル」スコープに入っていることを意味していません。また、sampleKeyAへの参照はより特定バージョンの「コンパイル時のサンプルキー」を使用しますか? –

+0

いいえ、設定にタスクスコープが自動的に適用されることはありません。 _sampleKeyA_が_compile_スコープにスコープされるようにするには、明示的にそれを行う必要があります。 –

2

value 2がコンパイルでスコープされているので、それはvalue 1を選択しましたが、一般バージョンを取得しました。 sampleKeyA in Compileと書いたら、それはうまくいくでしょう。または、おそらく、in compile - 私は、スコープcompileが実際に存在しないので、宣言が間違っていると思います。それはタスクをコンパイルに設定をスコープので、コンパイルsampleKeyAを規定する第1

+0

私は「コンパイル」を使用してで混乱例を選んだこと - 私は本当に、小文字のバージョンが必要でした私はタスクの軸 "コンパイル"の範囲ではなく、 "コンパイル"の設定をしたいと思っていたからです。私はちょっと "あなたが"スコープのコンパイルが実際には存在しない "と言う理由を混乱させています - "コンパイル "コマンドがあります、そして、それは常にタスク軸に一致するスコープがあることを意味すると思いましたこの恐ろしいことを間違っている)。 –

関連する問題