В sbt, как добавить плагин, который находится в локальной файловой системе?
Если я хочу добавить плагин, который находится в локальном каталоге за пределами дерева проекта, каков правильный способ сделать это? Скажем, я клонирую что-то простое, например https://github.com/steppenwells/sbt-sh.git в / tmp / sbt-sh - что я помещаю в файл build.sbt, чтобы использовать плагин из / tmp / sbt-sh что подхватит любые изменения, которые я внесу в /tmp/sbt-sh?
2 ответа
Как то так в project/project/Build.scala
следует сделать это:
import sbt._
object PluginDef extends Build {
lazy val projects = Seq(root)
lazy val root = Project("plugins", file(".")) dependsOn( shPlugin )
lazy val shPlugin = uri("file:///tmp/sbt-sh")
}
Обратите внимание, что в двойном вложении project
каталоги обязательны. Я не знаю ни одного способа сделать это из .sbt
файл (может быть, но я не знаю, что это).
Это задокументировано здесь (см. "1d) Зависимость проекта").
В 0.13 есть а) простой способ сделать это и б) лучшая документация. @ Ответ PaulButcher указывал на раздел 1d документации sbt для плагинов, в которой теперь говорится, что нужно отредактировать project/plugins.sbt:
lazy val root = project.in( file(".") ).dependsOn( assemblyPlugin )
lazy val assemblyPlugin = uri("git://github.com/sbt/sbt-assembly#0.9.1")
И, конечно, этот URI (... может быть заменен файлом ("/tmp/sbt-sh").