В 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").

Другие вопросы по тегам