go vendor 项目迁移到 mod 项目

检查最新的 Golang 版本

你如果问我,为什么要用最新的?因为我们都是软件爱好者,我们应该渴望测试最新的技术! ( 顺便说一下,你可以用 Golang 1.11.X,但是您应该想知道为什么不使用最新的可用版本…… )

找到要迁移的项目

在本文中,我将迁移一个我几个月前工作过的个人项目。在这个项目中,我使用 Glide 来管理依赖项。你可以对你的任何项目做同样的事情。

不要担心 mollydb 做了什么,因为我们只需要理解如何迁移现有的项目。

git clone https://github.com/wesovilabs/mollydb.git
cd mollydb
git checkout -b feature/using-go-mods

调整项目结构

这个项目是用一个 src 文件夹构建的,该文件夹包含一个子文件夹 mollydb,在这个子文件夹中有一个 vendor 目录用来存依赖项。

src > mollydb > vendors

删除 vendor 目录

rm -rf src/mollydb/vendor

运行如下命令初始化 go modeule 和 拉取依赖

go mod init mollydb # 初始化 go module
go mod tidy # 拉取依赖

命令执行完毕后,会在根路径下将得到一个 go.mod 和 go.sum 文件,其中 go.mod 文件内容将如下所示

module mollydb
require (
  gitHub.com/boltdb/bolt v0.0.0 – 20180302180052-fd01fc79c553
  gitHub.com/fsnotify/fsnotify v1.4.7
  gitHub.com/go-yaml/yaml v0.0.0 – 20140922213225-bec87e4332ae
  gitHub.com/graphql-go/graphql v0.0.0 – 20180324214652 – 8ab5400ff77c
  gitHub.com/graphql-go/handler v0.0.0 – 20180312211735-df717460db9a
  gitHub.com/graphql-go/relay v0.0.0 – 20171208134043 – 54350098cfe5
  golang.org/x/net v0.0.0 – 20180320002117 – 6078986fec03
  golang.org/x/sys v0.0.0 – 20180318190847 – 01acb38716e0
  gopkg.in/yaml.v2 v2.1.1
)

运行程序

我们只需要运行下面的命令来验证项目是否像以前那样工作。

go run main.go

所有的都成功了

go module vs vendor

go1.5引入 vendor 来管理模块依赖,go1.11引入module概念来替代 vendor,成为最新的推荐的包管理工具。详细对比可以阅读:Go:包管理工具GOPATH、vendor、dep 、go module

go module和vendor是两个冲突的设计,二者只能选一,不可混用。

vendor依赖的是GOPATH,那么必须设置GOPATH

module不使用GOPATH,那么可以不设置GOPATH,成为了一个可选项。

转自:迁移到 mod 只需 3 个步骤,对原文有删改。
此外还参考了:go vendor的用法Go:包管理工具GOPATH、vendor、dep 、go module

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
go mod vendor是一个命令行工具,用于将主模块的vendor目录重置为包含构建和测试所有主模块包所需的所有包。它不包括供应商包的测试代码。如果主模块的根目录中存在vendor目录,并且主模块的go.mod文件中的go版本为1.14或更高版本,则会自动使用该vendor目录。要显式启用供应商功能,请使用标志-mod=vendor。要禁用供应商功能,请使用标志-mod=readonly或-mod=mod。go mod vendor还有其他好处,例如当从版本控制系统中删除依赖项或代理服务器丢失模块时,可以使用vendor解决问题。此外,它还可以帮助您跟踪和调试依赖项,并在需要时进行测试更改。运行go mod tidy和go mod vendor后,您的更改将被替换。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [Go:go mod vendor 使用](https://blog.csdn.net/test1280/article/details/120855865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Vendor使用:golangvendor是个啥?](https://blog.csdn.net/qq_39458487/article/details/124803432)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值