7

sbt 0.11 でビルドされたプロジェクトがあります。私は Scala Swing でシンプルな UI を作成しようとしているので、最初に build.sbt に scala-swing への依存関係を追加します。

libraryDependencies += "org.scala-lang" % "scala-swing" % "2.9.1-1"

しかし、私は SettingKey scalaVersion を定義しています:

scalaVersion := "2.9.1-1"

そのプロパティを参照するにはどうすればよいですか? のように使おうとすると

libraryDependencies += "org.scala-lang" % "scala-swing" % scalaVersion

コンパイラは、String が期待されているのに sbt.SettingKey[String] が見つかったと不平を言います。メソッドget(...)evaluate(...)on SettingKey がありますが、いくつかの Setting[Scope] パラメータを渡す必要があります。

このプロパティを参照する最も簡単な方法は何ですか?

4

4 に答える 4

5

libraryDependenciesあなたは今依存しているシステムに伝える必要がありますscalaVersion

libraryDependencies <+= (scalaVersion) { sv => "org.scala-lang" % "scala-swing" % sv }

(これが私の好みのフォーマットです。実際にはapplyメソッドを呼び出してscalaVersionいるので、いくつかの異なる方法で記述できます。たとえば、scalaVersion("org.scala-lang" % "scala-swing" % _)。)

同時に依存したい複数の設定がある場合は、それらのタプルに適用します。

foo <<= (scalaVersion, organization) { (sv, o) => o + " uses Scala " + sv }
于 2012-05-01T15:31:25.583 に答える
3
libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-swing" % _)

<、設定が別の設定に依存していることをSBTに通知します。

SBTに、既存の値を置き換えるの+ではなく、別の値を追加することを通知します(また、設定の内容がシーケンスであり、それに1つの要素を追加していることを示します)。

構文setting(function)はと同じですfunction(setting)。ここfunctionで、適切なコンテキストで評価された設定をパラメーターとして受け取ります。それを書く方法すらわかりません、そしてそれは非常に冗長になるでしょう、それでショートカットは非常に役に立ちます。

(setting 1, setting 2)((a, b) => ... )複数の設定に依存するために使用することもできます。

PS:以下も同様に機能する可能性があり、少し短くなりますが、2.10.0以降、特別なコンパイラフラグなしで非推奨になりました。

libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-swing" %)
于 2012-05-02T21:59:33.227 に答える
0

何かのようなもの

libraryDependencies <+= scalaVersion { v => "org.scala-lang" % "scala-swing" % v}

動作するはずです。

于 2012-05-01T15:38:43.083 に答える