我从GitHub分叉了一个Scala库,我想将它导入另一个项目.
我怎么能告诉sbt在哪里找到这个包?
例如,我正在编写一个程序~/code/scala/myProgram,我想从中导入一个库~/code/scala/otherlib.
Mik*_*len 11
如果您已克隆的项目支持它(即,如果它支持SBT并配置为发布到存储库),则可以使用sbt命令在本地发布它sbt publish-local.例如:
cd ~/code/scala/otherlib
sbt publish-local
Run Code Online (Sandbox Code Playgroud)
这将在您的本地Ivy存储库(通常~/.ivy2/local)中构建和发布此库.请注意,每次修改otherlib源时都需要重复此操作.
在项目本地发布到本地Ivy存储库之后,您可以otherlib在SBT项目中指定为依赖项,使用常规SBT依赖项来分叉库的原始版本(假设您没有更改其ID,版本,组ID等).例如,添加:
libraryDependencies += "com.some_company" % "otherlib" % "1.0.0"
Run Code Online (Sandbox Code Playgroud)
到你的build.sbt文件.
现在,当你建立你的项目时,会发现otherlib在你的本地常春藤库(就像它自己被从一个普通仓库拉低),并使用它的定制版本.
如果otherlib不支持SBT,或者未配置为发布到存储库,并且您不想修改它以执行此操作,那么您只需将其.jar文件复制到项目的/lib目录(~/code/scala/myProgram/lib)中即可.
SBT支持开箱即用的git存储库.支持是为clone和checkout.请参阅我的回答可以SBT刷新git uri依赖(总是或按需)?或者使用Git本地存储库作为SBT项目中的依赖项?,归结为以下内容build.sbt:
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
Run Code Online (Sandbox Code Playgroud)
一旦定义了依赖项(项目之间),就可以使用它 - git托管的项目 - 没有其他配置.