В SBT, как вы добавляете плагин, который находится в локальной файловой системе? - PullRequest
23 голосов
/ 20 декабря 2011

Если я хочу добавить плагин, который находится в локальном каталоге за пределами дерева проекта, каков правильный способ сделать это? Скажем, я клонирую что-то простое, например https://github.com/steppenwells/sbt-sh.git, в / tmp / sbt-sh - что я помещаю в файл build.sbt, чтобы использовать плагин из / tmp / sbt-sh, который будет регистрировать любые изменения, которые я делаю в / TMP / SBT-ш

Ответы [ 2 ]

18 голосов
/ 20 декабря 2011

Что-то вроде этого в 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) Зависимость проекта»).

12 голосов
/ 19 апреля 2014

В 0.13 есть а) простой способ сделать это и б) лучшая документация.@ Ответ PaulButcher указывал на раздел 1d документации sbt для плагинов , в которой теперь предлагается редактировать проект / plugins.sbt:

(@ axel22 указывает, что это изменилось, поэтому проверьтетекущий документ перед копированием)

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

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