在sbt中,如何添加本地文件系统中的插件?

Jam*_*ore 23 scala sbt

如果我想添加一个位于项目树外的本地目录中的插件,那么正确的方法是什么?假设我将一些简单的东西克隆到https://github.com/steppenwells/sbt-sh.git到/ tmp/sbt-sh - 我在build.sbt文件中放入什么来使用/ tmp/sbt-sh中的插件这将取消我在/ tmp/sbt-sh中所做的任何更改?

Pau*_*her 18

这样的东西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")
}
Run Code Online (Sandbox Code Playgroud)

请注意,双嵌套project目录是必需的.我不知道有任何方法可以从.sbt文件中执行此操作(可能有一种方法,但我不知道它是什么).

在此处记录(参见"1d)项目依赖").

  • 谢谢.我看到了,但我没想到你可以使用file:// url.似乎应该有一种更简单的方法来执行此操作,例如addLocalSbtPlugin("/ tmp/sbtsh") (2认同)
  • 这也可能有用(我没试过):lazy val shPlugin = file("/ tmp/sbt-sh") (2认同)
  • 此外,如果您输入错误的文件名,您收到的错误消息有点误导:无效的构建URI(没有可用的处理程序):file:/// tmp/sbt-shX /(其中sbt-shX不存在) (2认同)

Jam*_*ore 12

在0.13中,有一个a)一种简单的方法,以及b)更好的文档.@PaulButcher的答案指向插件的sbt文档的第1d节,它现在告诉你编辑project/plugins.sbt:

lazy val root = project.in( file(".") ).dependsOn( assemblyPlugin )
lazy val assemblyPlugin = uri("git://github.com/sbt/sbt-assembly#0.9.1")
Run Code Online (Sandbox Code Playgroud)

当然那个uri(...可以用文件替换("/ tmp/sbt-sh").

  • 第二行中缺少“RootProject”。 (2认同)