git - SBT 能否刷新 git uri 依赖项(总是或按需)?

标签 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")
  )
}

这工作正常,但我发现如果我对 build_0.1 进行更改并推送它,当我再次编译 项目时,sbt 不会 pull 我所做的更改使我有一个过时的插件。

如何让 SBT 始终对其依赖的依赖项进行 git pull?

最佳答案

SBT 0.13.2-M1 仅支持 git clonegit checkout

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

git:file:///Users/jacek/sandbox/so/sbt-git/git-repo

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

git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#a221379c7f82e5cc089cbf9347d473ef58255bb2

当我提交对 git 仓库的更改时,我还必须更新 build.sbt 中的提交哈希,以便在SBT 项目(下面的 val 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

随着 git 存储库的更改,SBT 项目必须重新加载,以便可以运行新的 checkout 并刷新项目。

[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]>

这很痛苦,但可以解决问题(并让您使用远程 git 存储库跟踪您的位置)。

您还可以找到 Can multi-projects from GIT be used as SBT dependencies?有用。

关于git - SBT 能否刷新 git uri 依赖项(总是或按需)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174681/

相关文章:

git - 在远程存储库上提交历史记录

git - 将存储库从 Gitlab 迁移到 Azure DevOps

scala - 如何在我的项目中获取 'package' 任务

Hadoop依赖于两个不同版本的beanutils

仅当所有测试通过时 Git 主存储库更新,怎么办?

git - 企业对 Git 的采用率?

c - 在线C项目锻炼?

scala - 错误 : `<<=` operator is removed. 使用 `key := { x.value }` 或 `key ~= (old => { newValue })`

scala - scopt "not found: value"定义具有相同名称的 val

scala - 在 SBT 0.13 中设置 scaladoc 的输出目录(因为不推荐使用 docDirectory)?