SBT可以刷新git uri依赖(总是或按需)?

use*_*279 7 git sbt

我有以下sbt代码在git uri上添加插件依赖项:

import sbt._

object Plugins extends Build {
  lazy val username = ("git config --global user.bitbucket" !!).trim

  lazy val root = Project("root", file(".")) dependsOn(
    uri(s"https://$username@git-repo.org/team/build.git#build_0.1")
  )
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我发现,如果我进行更改build_0.1并推送它,当我compile再次来到项目时,sbt不会提取我所做的更改,所以我有一个过时的插件.

我怎样才能让SBT始终对它依赖的依赖关系做一个git pull?

Jac*_*ski 4

仅支持最高0.13.2-M1 的SBT 。git clonegit checkout

git clone当 URL 不包含#指向分支或提交时使用,例如

git:file:///Users/jacek/sandbox/so/sbt-git/git-repo
Run Code Online (Sandbox Code Playgroud)

git checkout#当 URL中有指向分支或提交的 URL时执行,例如

git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#a221379c7f82e5cc089cbf9347d473ef58255bb2
Run Code Online (Sandbox Code Playgroud)

当我commit对 git 存储库进行更改时,我也必须更新 中的提交哈希build.sbt,以便在 SBT 项目中引用更改(v下面的值)。

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
Run Code Online (Sandbox Code Playgroud)

随着 git 存储库中的更改,必须对 SBT 项目进行reload编辑,以便可以运行新的签出并刷新项目。

[root]> reload
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Loading project definition from /Users/jacek/sandbox/so/sbt-git/project
Cloning into '/Users/jacek/.sbt/0.13/staging/24535507588417c1c2dc/git-repo'...
Checking connectivity... done
[info] Set current project to root (in build file:/Users/jacek/sandbox/so/sbt-git/)
[root]>
Run Code Online (Sandbox Code Playgroud)

这很痛苦,但确实有效(并且让你可以使用远程 git 存储库跟踪你所在的位置)。

您可能还会发现来自 GIT 的多项目能否用作 SBT 依赖项?有用。