我有一个使用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来自哪里?
答案 0 :(得分:1)
此build.sbt
构建定义中存在一些问题,因此我强烈建议您阅读文档Macro Paradise,在那里您可以找到the link to a project 的端到端例如,但简而言之,使用宏天堂就像在构建中添加以下两行一样简单(授予您已经设置SBT以使用宏)。
对于此版本中的问题,我没有看到Def.setting
对于depdendencies reflect
和compiler
的原因,而且我不确定addCompilerPlugin
中的依赖关系{ {1}}。使用下面的Def.setting
来指代scalaVersion
设置的值。我仍然认为addCompilerPlugin
应该遵循上面的示例项目。
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)