使用Git本地存储库作为SBT项目中的依赖项?

时间:2013-11-22 02:47:58

标签: git scala sbt

我从GitHub克隆了一个存储库到我的本地机器,更改它以满足我的需求,现在我将在我的项目中使用它。我想我必须使用.jar文件。但是,没有这样的文件。

我必须自己生成吗?

另外,我该如何参考呢?我现在不想将其复制到/lib文件夹,因为我一直在处理克隆的项目。我发现我必须使用它:

resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository" 

但是,我没有文件build.sbt,我只有一个标题为Build.scala的普通scala文件,并且无法使用上面的代码。

另外,它说/.m2/repository,但它如何知道.jar文件在此存储库中的位置?

1 个答案:

答案 0 :(得分:4)

由于该项目来自GitHub,我认为它是一个git项目。解决方案是使用RootProject和git URI作为对克隆git项目的引用。

假设您将项目克隆到/Users/jacek/sandbox/so/sbt-git/git-repo(就像我在Can SBT refresh git uri dependency (always or on demand)?中所做的那样)。

执行git log以找出您要引用的最后一个提交,并在SBT中引用项目的git URI中使用它 - 在dependsOn中。

鉴于最后一次提交是a221379c7f82e5cc089cbf9347d473ef58255bb2build.sbt可能如下所示:

lazy val v = "a221379c7f82e5cc089cbf9347d473ef58255bb2"

lazy val g = RootProject(uri(s"git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#$v"))

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

git fetch中所述,使用git merge后跟{{1}}更新后,也可以省略提交ID并跟上引用的git项目中的开发。