go依赖管理-govendor Golang 官方并没有推荐最佳的包管理方案。到了1.5版本时代,官方引入包管理的设计,加了 vendor 目录来支持本地包管理依赖。官方 wiki 推荐了多种支持这种特性的包管理工具,如:Godep、gv、gvt、glide、govendor等。 govendor该工具将项目依赖的外部包拷贝到项目下的 vendor 目录下,并通过 vendor.json 文件来记录依赖包的版本,方便用户使用相对稳定的依赖。 对于 govendor 来说,依赖包主要有以下多种类型: 状态 缩写状态 含义 +local l 本地包,即项目自身的包组织 +external e `govendor`是Go语言生态系统中的一种包管理工具,它主要解决了Go官方在1.5版本后引入的`vendor`目录来支持本地依赖管理的问题。由于Go官方并未提供官方推荐的包管理方案,社区发展出了多种工具,如Godep、gv、gvt、glide等,`govendor`就是其中之一。 `govendor`的核心功能是将项目的外部依赖包复制到项目根目录下的`vendor`目录中,并通过`vendor.json`文件记录这些依赖包的具体版本。这样做的好处在于确保项目使用的是确定的依赖版本,避免因远程依赖变动导致的不稳定性。`govendor`根据不同的包状态,将它们分为以下几类: 1. `+local (l)`: 本地包,即项目自身包含的包。 2. `+external (e)`: 外部包,由`$GOPATH`管理,但不在`vendor`目录下。 3. `+vendor (v)`: 已经被`govendor`管理的包,存在于`vendor`目录内。 4. `+std (s)`: 标准库中的包。 5. `+unused (u)`: 在`vendor`目录中但项目未使用的包。 6. `+missing (m)`: 代码引用了依赖包,但未找到对应的包。 7. `+program (p)`: 主程序包,可编译为执行文件。 8. `+outside`: 外部包和缺失的包。 9. `+all`: 所有包。 要开始使用`govendor`,首先需要通过`go get`命令进行安装: ```bash go get -u github.com/kardianos/govendor ``` 之后,可以在项目位于`$GOPATH/src`路径下时进行以下操作: - **初始化项目**:`govendor init`会在项目目录下创建`vendor`文件夹和`vendor.json`文件。 - **添加依赖**:`govendor add +external`将`$GOPATH`中的依赖添加到`vendor`目录并更新`vendor.json`。 - **查看依赖列表**:`govendor list`列出已添加的依赖,`govendor list -v`显示更详细的信息。 - **指定版本获取**:`govendor fetch <import_path>@<revision>`可以获取特定版本的依赖。 - **更新依赖**:`govendor fetch <import_path>`或`govendor update <import_path>`更新依赖。 - **删除依赖**:`govendor remove <import_path>`从`vendor`目录移除依赖。 - **检查状态**:`govendor status`列出丢失、过期或被修改的包。 - **同步依赖**:`govendor sync`从远程仓库拉取更新至`vendor`目录。 - **迁移依赖**:`govendor migrate`用于从其他包管理工具迁移依赖。 - **格式化**:`govendor fmt +local`对本地包进行格式化。 - **构建**:`govendor install +local`构建项目。 - **测试**:`govendor test +local`运行本地包的测试。 此外,`govendor`还提供了其他子命令,如`fetch`、`migrate`、`get`、`license`和`shell`等,便于管理和维护项目依赖。`govendor`提供了一套完整的解决方案,帮助Go开发者更好地管理和控制项目中的依赖关系,确保代码的稳定性和可重复构建性。
- 粉丝: 3
- 资源: 962
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0