我正在开发一个Scala编译器插件,现在我必须去插件项目,运行sbt publishLocal
,回到我的项目,然后运行sbt clean compile
。
这是因为我在build.sbt中使用了addCompilerPlugin(...)
我想知道是否有一种方法可以引用编译器插件的本地路径,以便我可以简单地运行sbt compile
。
谢谢。
答案 0 :(得分:0)
这是我们可以实现的方式:
scalacOptions in Compile ++= {
val jar = (Keys.`package` in (plugin, Compile)).value
System.setProperty("sbt.paths.plugin.jar", jar.getAbsolutePath)
val addPlugin = "-Xplugin:" + jar.getAbsolutePath
// Thanks Jason for this cool idea (taken from https://github.com/retronym/boxer)
// add plugin timestamp to compiler options to trigger recompile of
// main after editing the plugin. (Otherwise a 'clean' is needed in the current project)
val dummy = "-Jdummy=" + jar.lastModified
Seq(addPlugin, dummy)
}
以上操作在插件项目上运行package
,获取其jar,然后通过当前项目上的scalacOptions
添加插件。
感谢这位Redditor回答了我的问题:https://www.reddit.com/r/scala/comments/aq2bt6/just_made_a_compiler_plugin_to_enforce_named/