Как включить плагин компилятора Scala из локального пути? - PullRequest
0 голосов
/ 13 февраля 2019

Я разрабатываю плагин для компилятора Scala, и сейчас мне нужно перейти к проекту плагина, запустить sbt publishLocal, вернуться в свой проект и запустить sbt clean compile.

Это потому, что я использую addCompilerPlugin(...) в моем build.sbt

Интересно, есть ли способ ссылаться на локальный путь плагина компилятора, чтобы я мог просто запустить sbt compile.

Спасибо.

1 Ответ

0 голосов
/ 18 февраля 2019

Вот как мы можем этого достичь:

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)
}

Вот пример: https://github.com/GIVESocialMovement/scala-named-argument-compiler-plugin/blob/master/test-project/build.sbt#L26

Это выше запускает package в проекте плагина, получает его jar и добавляетПлагин через scalacOptions на текущий проект.

Спасибо этому redditor за ответ на мой вопрос: https://www.reddit.com/r/scala/comments/aq2bt6/just_made_a_compiler_plugin_to_enforce_named/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...