Scala 在sbt中,如何添加';它在本地文件系统中吗?

Scala 在sbt中,如何添加';它在本地文件系统中吗?,scala,sbt,Scala,Sbt,如果我想在项目树之外的本地目录中添加插件,那么正确的方法是什么?假设我克隆了一些简单的东西,比如/tmp/sbt sh-我在build.sbt文件中放了什么来使用/tmp/sbt sh中的插件,该插件将接收我在/tmp/sbt sh中所做的任何更改?类似于project/project/build.scala应该这样做: import sbt._ object PluginDef extends Build { lazy val projects = Seq(root) lazy

如果我想在项目树之外的本地目录中添加插件,那么正确的方法是什么?假设我克隆了一些简单的东西,比如/tmp/sbt sh-我在build.sbt文件中放了什么来使用/tmp/sbt sh中的插件,该插件将接收我在/tmp/sbt sh中所做的任何更改?

类似于
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")
}
请注意,双重嵌套的
项目
目录是必需的。我不知道如何从
.sbt
文件中执行此操作(可能有一种方法,但我不知道它是什么)

这是有文档记录的(请参见“1d)项目依赖关系”)。

在0.13中,有a)一种简单的方法来实现这一点,b)更好的文档记录@PaulButcher的回答指出,现在它告诉您编辑project/plugins.sbt:

(@axel22指出此项已更改,请在复制此项之前检查当前文档)


当然,uri(…可以替换为一个文件(“/tmp/sbt sh”)。

谢谢。我看到了,但我没有想到你可以使用一个文件://url。不过,似乎应该有一种更简单的方法来实现这一点,比如addLocalSbtPlugin(“/tmp/sbtsh”),这也可能有效(我没有尝试过):lazy val shPlugin=file(“/tmp/sbt sh”)此外,如果输入了错误的文件名,则会收到一条错误消息,这有点误导性:生成URI无效(没有可用的处理程序):file:///tmp/sbt-shX/ (其中sbt shX不存在)是的,您的file()建议有效:lazy val webPlugin=file(“/tmp/sbt sh”)
RootProject
在第二行中丢失。@axel22这是后来添加的;0.13没有使用它。感谢您的澄清-我只使用了1.0+。
lazy val root = project.in( file(".") ).dependsOn( assemblyPlugin )
lazy val assemblyPlugin = uri("git://github.com/sbt/sbt-assembly#0.9.1")