您可以从 sbt 提示符注入编译器插件吗?

Posted

技术标签:

【中文标题】您可以从 sbt 提示符注入编译器插件吗?【英文标题】:can you inject a compiler plugin from the sbt prompt? 【发布时间】:2015-11-24 01:30:59 【问题描述】:

在 sbt 中,您可以从 sbt 提示符而不是从构建定义文件中注入编译器插件吗?

动机:

能够将您自己开发的编译器插件注入到属于您的测试套件的项目中,而无需编辑其构建定义。我发现自动编辑构建定义以连接插件是相当不确定的......

其他动机:

使用或不使用特定编译器插件进行灵活编译,无需编辑文件,也无需使用只需要在特定时间使用的编译器插件污染团队 git。例如。考虑https://github.com/sksamuel/scalac-scapegoat-plugin。

如果所有其他方法都失败了,您能否使用全局安装的 sbt plugin 来执行此操作,这会引入新的 sbt 命令?

【问题讨论】:

【参考方案1】:

从本地位置运行插件可以像以下示例一样工作:

set scalacOptions in ThisBuild += "-Xplugin:/home/USERNAME/.ivy2/local/......./jars/plugin_2.11.jar"

但是,此方法不会从存储库中获取插件,而只会从本地路径中获取。寻找一种全局加载插件并仅从 sbt 提示符激活它的方法,天真地将插件添加为全局插件定义中的托管依赖项 ~/.sbt/0.13/plugins/plugins.sbt 单独,在之后编译项目时不会激活插件。

【讨论】:

以上是关于您可以从 sbt 提示符注入编译器插件吗?的主要内容,如果未能解决你的问题,请参考以下文章

SBT 插件:如何将编译器插件添加为不向下游传播的依赖项?

SBT 插件可以嵌入来自另一个插件的任务吗?

SBT 插件:传播编译器插件并在下游启用插件

SBT插件——编译前执行自定义任务

在构建 SBT 编译时,我需要运行一些可以从案例类创建模式 JSON 的类

Sbt Plugin 添加依赖到 project/build.sbt