SBT项目如何将库从GitHub导入到本地目录?

SBT项目如何将库从GitHub导入到本地目录?,sbt,Sbt,我从GitHub派生了一个Scala库,我想将它导入另一个项目 我如何告诉sbt在哪里可以找到这个包裹 例如,我正在用~/code/scala/myProgram编写一个程序,如果您克隆的项目支持库(即支持SBT并配置为发布到存储库),我想从~/code/scala/otherlib导入库),您可以使用sbt命令sbt publish local在本地发布它。例如: cd ~/code/scala/otherlib sbt publish-local 这将在本地常春藤存储库中构建并发布此库(通

我从GitHub派生了一个Scala库,我想将它导入另一个项目

我如何告诉sbt在哪里可以找到这个包裹


例如,我正在用
~/code/scala/myProgram
编写一个程序,如果您克隆的项目支持库(即支持SBT并配置为发布到存储库),我想从
~/code/scala/otherlib
导入库),您可以使用sbt命令
sbt publish local
在本地发布它。例如:

cd ~/code/scala/otherlib
sbt publish-local
这将在本地常春藤存储库中构建并发布此库(通常为
~/.ivy2/local
)。请注意,每次修改
otherlib
源时都需要重复此操作

将项目本地发布到本地Ivy存储库后,您可以在SBT项目中指定
otherlib
作为依赖项,对分叉库的原始版本使用常规SBT依赖项(假设您没有更改其ID、版本、组ID等)。例如,加入:

libraryDependencies += "com.some_company" % "otherlib" % "1.0.0"
到您的
build.sbt
文件

现在,当您构建项目时,它将在您本地的Ivy存储库中找到
otherlib
(就好像它是从常规存储库中提取出来的一样),并将使用您的自定义版本


如果
otherlib
不支持SBT,或者没有配置为发布到存储库,并且您不想修改它,那么您可以简单地将其.jar文件复制到项目的
/lib
目录(
~/code/scala/myProgram/lib
)中。

SBT支持git存储库。支持
克隆
签出
。请参见我在
build.sbt
中对or的回答,其归结为以下内容:

lazy val gitRepo = "git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#master"

lazy val g = RootProject(uri(gitRepo))

lazy val root = project in file(".") dependsOn g

一旦定义了(项目之间的)依赖关系,就可以使用它—git托管的项目—而无需其他配置。

谢谢您的回答,令人惊讶的是,我在网上找不到类似的内容。干杯这是SBT非常棒的地方。在使用ApacheSpark时,我必须特别使用它,因为依赖项太大了,以至于每次我做一个Spark项目时,我都必须下载所有东西来测试它。Handy?!你一定是在开玩笑。这是sbt的杀手级功能!你应该考虑更多地使用它来欣赏它的美。希望git项目得到更好的支持,尤其是
update