【问题标题】:sbt get real compiler options in custom sbt pluginsbt 在自定义 sbt 插件中获取真正的编译器选项
【发布时间】:2014-07-03 17:47:12
【问题描述】:

我知道 sbt 中有scalacOptions。但是通过addCompilerPlugin 添加的选项在scalacOptions 中不存在。

我在 sbt 控制台中输入 show scalacOptions 并没有像 -Xplugin 这样的东西。

那么当我在写一个 sbt 插件时,我怎样才能得到real scalac 选项

我的 sbt 信息

> libraryDependencies
[info] List(org.scala-lang:scala-library:2.10.4, org.scala-lang:scala-reflect:2.10.4, io.netty:netty:3.9.0.Final, net.sandrogrzicic:scalabuff-runtime:1.3.7, org.scalamacros:quasiquotes:2.0.0, org.specs2:specs2:2.3.11:test, org.scalamacros:paradise:2.0.0:plugin->default(compile))
> show scalacOptions
[info] List(-feature, -deprecation, -language:implicitConversions, -language:dynamics)
[success] Total time: 0 s, completed Jul 3, 2014 4:04:09 PM
> version
[info] 0.0.1-SNAPSHOT
> sbt
sbtBinaryVersion    sbtClearOnFailure   sbtDependency       sbtPlugin           sbtPopOnFailure     sbtResolver         sbtStashOnFailure   
> sbtVersion
[info] 0.13.5
> 

我的 build.sbt

libraryDependencies ++= Seq(
  "org.scala-lang" % "scala-reflect" % "2.10.4",
  "io.netty" % "netty" % "3.9.0.Final",
  "net.sandrogrzicic" %% "scalabuff-runtime" % "1.3.7",
  "org.scalamacros" %% "quasiquotes" % "2.0.0",
  "org.specs2" %% "specs2" % "2.3.11" % "test")

scalacOptions ++= Seq(
  "-feature",
  "-deprecation",
  "-language:implicitConversions",
  "-language:dynamics"
)

parallelExecution in Test := false

addCompilerPlugin("org.scalamacros" % "paradise" % "2.0.0" cross CrossVersion.full)

【问题讨论】:

  • 我很高兴看到我不是唯一一个在 sbt 上遇到很多麻烦的人。它只是没有文档,所以对项目进行 git clone 并尝试跟踪 ./main/src/main/scala/sbt/Defaults.scala 中的源代码

标签: scala sbt


【解决方案1】:

最后发现compile:scalacOptions居然包含插件设置

【讨论】:

    【解决方案2】:

    你确定你确实设法添加了编译器插件吗?

    使用 sbt 0.13.5 和 build.sbt 中的空项目:

    addCompilerPlugin("org.scala-lang.plugins" % "continuations" % "2.10.1")
    

    我在 libraryDependencies 和 scalacOptions 中都获得了插件:

    > libraryDependencies
    [info] List(org.scala-lang:scala-library:2.10.4, org.scala-lang.plugins:continuations:2.10.1:plugin->default(compile))
    > show scalacOptions
    [info] List(-Xplugin:/Users/johan/.ivy2/cache/org.scala-lang.plugins/continuations/jars/continuations-2.10.1.jar)
    

    【讨论】:

    • 我已经更新了我的问题,你可以看看它。
    • 而compilerPlugin真的运行了吗?您没有不小心将它添加到 project/plugins.sbt 而不是 build.sbt? (编译器插件不是 sbt插件)
    • 我在 scala 2.10 中使用 quansiquote。而且它编译得很好,所以我猜插件添加成功
    • 那我就不知道了。查看 sbt 源代码,addCompilerPlugin 所做的唯一一件事就是用特殊的“配置”(“plugin->default(compile)”)装饰 ModuleID,然后将其添加到 libraryDependencies,所以如果它有效,它应该在那里。
    • 是的,库依赖项包含您所说的内容。
    猜你喜欢
    • 2021-05-22
    • 2018-10-29
    • 2014-12-05
    • 1970-01-01
    • 2017-02-10
    • 2021-08-07
    • 1970-01-01
    • 2013-05-30
    • 2013-12-18
    相关资源
    最近更新 更多