1

1 つのプラグインと 3 つの依存関係を使用する sbt ビルド ファイルがあります。

scalaVersion := "2.10.4"

val reflect = Def.setting { "org.scala-lang" % "scala-reflect" % "2.10.4" }

val compiler = Def.setting { "org.scala-lang" % "scala-compiler" % "2.10.4" }

lazy val macrosSettings = Project.defaultSettings ++ Seq(
addCompilerPlugin("org.scala-lang.plugins" % "macro-paradise_2.10.4-SNAPSHOT" % "2.0.0-SNAPSHOT"),
libraryDependencies ++= {
  import Dependencies._
  Seq(play_json, specs2, reflect.value)
}
)

lazy val Macros = Project(id="IScala-Macros", base=file("macros"), settings=macrosSettings)

ただし、コンパイラは IScala-Macros のコンパイル中に次のエラーを表示しました。

[warn]  :: org.scala-lang#scala-compiler;2.10.4-SNAPSHOT: not found
[warn]  :: org.scala-lang#scala-library;2.10.4-SNAPSHOT: not found
[warn]  :: org.scala-lang#scala-reflect;2.10.4-SNAPSHOT: not found

2.10.4-SNAPSHOT に解決してほしくないので、これはバグのようですが、2.10.4 だけです。sbt のバグですか? そうでない場合、この SNAPSHOT はどこから来たのですか?

4

1 に答える 1

1

このbuild.sbtビルド定義にはいくつかの問題があるため、ドキュメントMacro Paradiseを読むことを強くお勧めします。ここには、エンド ツー エンドの例のプロジェクトへのリンクがありますが、一言で言えば、マクロ パラダイスでの作業は次のように簡単です。次の 2 行をビルドに追加します (マクロを使用するように SBT を既に設定している場合)。

このビルドの問題に関しては、 と の依存関係の理由がわかりません。さらに、 の依存関係についてもDef.settingわかりません。設定の値を参照するために使用される次のものを使用します。上記のサンプルプロジェクトに従うべきだと思います。reflectcompileraddCompilerPluginDef.settingscalaVersionaddCompilerPlugin

import Dependencies._

scalaVersion := "2.10.4"

val reflect = Def.setting {
  "org.scala-lang" % "scala-reflect" % scalaVersion.value
}

val compiler = Def.setting {
  "org.scala-lang" % "scala-compiler" % scalaVersion.value
}

lazy val macrosSettings = Project.defaultSettings ++ Seq(
  addCompilerPlugin("org.scala-lang.plugins" % "macro-paradise_2.10.4-SNAPSHOT" % "2.0.0-SNAPSHOT"),
  libraryDependencies ++= Seq(
    play_json,
    specs2,
    reflect.value
  )
)

lazy val Macros = Project(id="IScala-Macros", base=file("macros"), settings=macrosSettings)
于 2014-07-19T19:33:42.767 に答える