加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – SBT编译器插件作为传递依赖关系

发布时间:2020-12-16 09:02:36 所属栏目:安全 来源:网络整理
导读:我有一个使用宏天堂插件(简称宏提供程序库)的库.在build.sbt中, addCompilerPlugin("org.scalamacros" % "paradise" % "2.0.0" cross CrossVersion.full) 以获得对宏注释的访问权限. 当将宏库作为libraryDependency添加到单独的项目(称为宏消费者项目)时,注
我有一个使用宏天堂插件(简称宏提供程序库)的库.在build.sbt中,

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

以获得对宏注释的访问权限.

当将宏库作为libraryDependency添加到单独的项目(称为宏消费者项目)时,注释是存在的,但宏实现不会被调用.将宏天堂编译器插件添加到宏消费者项目库依赖关系解决了这个问题.

可以将编译器插件作为传递依赖项吗?这将免除宏库的消费者添加所需的插件.

更新#1:

addCompilerPlugin帮助程序将依赖关系添加到libraryDependencies,并在宏提供程序库中使用configuration = Some(“plugin-> default(compile)”)设置依赖关系.

在图书馆中添加天堂依赖关系宏提供程序库中的依赖关系导致在宏消费者项目中显示工件.它不会将依赖项添加为编译器插件.

更新#2:

在宏 – 消费者项目中结合使用Update#1设置autoCompilerPlugins:= true无法解决问题.

解决方法

我发现解决这个问题的唯一方法是添加一个包含所需设置的sbt-plugin子模块.该插件非常基本,

package fixme

import sbt._
import Keys._

object Plugin extends sbt.Plugin {
  val paradiseVersion = "2.0.0"
  val fixmeVersion = "1.4"
  val fixmeSettings: Seq[Setting[_]] = Seq(
    resolvers += "tysonjh releases" at "http://tysonjh.github.io/releases/",libraryDependencies <++= (scalaVersion) { v: String ?
      (if (v.startsWith("2.10")) List("org.scalamacros" %% "quasiquotes" % paradiseVersion % "compile")
      else Nil) :+
        "org.scala-lang" % "scala-reflect" % v % "compile" :+
        "com.tysonjh" %% "fixme" % fixmeVersion % "compile"
    },addCompilerPlugin("org.scalamacros" % "paradise" % paradiseVersion cross CrossVersion.full))
}

这可以通过在你的项目/ plugins.sbt,

resolvers += "tysonjh releases" at "http://tysonjh.github.io/releases/"

addSbtPlugin("com.tysonjh" % "sbt-fixme" % "1.4")

和build.sbt文件,

fixmeSettings

sbt-plugin设置将宏天堂插件添加为编译器依赖关系,并将宏实现添加为库依赖关系.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读