1 go mod
Go.mod是Golang1.11版本新引入的官方包管理工具,用于解决记录依赖包具体版本的问题,方便依赖管理,类似于(composer.json 和composer.lock文件)

2 使用go mod

//linux
vim /etc/profile
export GO111MODULE=on
source /etc/profile//windows 建议用cmd管理员身份修改,即时生效
set GO111MODULE=on

GO111MODULE有三个值:off, on和auto(默认值)。
off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
on,go命令行会使用modules,而不去GOPATH目录下查找。
auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
当前目录在GOPATH/src之外且该目录包含go.mod文件
当前文件在包含go.mod文件的目录下面

命令列表:download    download modules to local cacheedit        edit go.mod from tools or scriptsgraph       print module requirement graphinit        initialize new module in current directorytidy        add missing and remove unused modulesvendor      make vendored copy of dependenciesverify      verify dependencies have expected contentwhy         explain why packages or modules are needed

3 设置代理
依赖于 go module 功能,故在第2步中进行了开启

vim /etc/profile
export GOPROXY=https://goproxy.io
或者
$ export GOPROXY=https://mirrors.aliyun.com/goproxy/
source /etc/profile

很多镜像都可以设置阿里云,比如composer

4 go.mod 文件说明

module robin //模块名,用于引用当前项目方法的起始路径go 1.17 //go版本require ( //直接依赖扩展版本github.com/gin-gonic/gin v1.7.7github.com/go-sql-driver/mysql v1.6.0github.com/jinzhu/gorm v1.9.16github.com/sirupsen/logrus v1.8.1gorm.io/gorm v1.22.5
)require (  //间接依赖版本,记录的原因是依赖里没有使用go.modgithub.com/gin-contrib/sse v0.1.0 // indirectgithub.com/go-playground/locales v0.13.0 // indirectgithub.com/go-playground/universal-translator v0.17.0 // indirectgithub.com/go-playground/validator/v10 v10.4.1 // indirectgithub.com/golang/protobuf v1.3.3 // indirectgithub.com/jinzhu/inflection v1.0.0 // indirectgithub.com/json-iterator/go v1.1.9 // indirectgithub.com/leodido/go-urn v1.2.0 // indirectgithub.com/mattn/go-isatty v0.0.14 // indirect
)

间接依赖场景
1 直接依赖的包,没有使用Go Module管理依赖,无go.mod文件,那么这个包的所有依赖都会以间接的方式出现在当前项目的的go.mod文件中,以indirect标识
2 直接依赖那个包,go.mod 文件不完整,缺失的依赖也会以间接的方式出现在当前的 go.mod 中
注意:间接依赖理论上不应该出现,如果 go.mod 中出现了间接依赖,那么要确认是否使用了过时的开源包

5 问题汇总

1 依赖包地址
$GOPATH/pkg/mod

2 go.mod 和 go.sum
go.mod存储的是依赖包的版本信息
go.sum /go.mod ,记录每个依赖库的版本和哈希值
官方建议,将两者同时放入git版本控制中,原因类似于composer

3 beego项目迁移
把项目复制到非gopath路径,进入项目
执行go mod init template 初始化go.mod文件,内容类似如下:

module templatego 1.12require (github.com/astaxie/beego v1.12.1github.com/go-sql-driver/mysql v1.5.0github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
)

执行go build 下载包,生成go.sum及

[@bx16-77-246 /var/www/gocode/template]# go build
go: finding module for package github.com/astaxie/beego/orm
go: finding module for package github.com/astaxie/beego
go: finding module for package github.com/astaxie/beego/logs
go: finding module for package github.com/astaxie/beego/config
go: finding module for package github.com/go-sql-driver/mysql
go: downloading github.com/astaxie/beego v1.12.1
go: downloading github.com/go-sql-driver/mysql v1.5.0
go: found github.com/astaxie/beego in github.com/astaxie/beego v1.12.1
go: found github.com/go-sql-driver/mysql in github.com/go-sql-driver/mysql v1.5.0

此时 nohup ./template & 允许项目的可执行程序即可
至此,迁移完毕。

4 golang unrecognized import path “golang.org/tools” 等类似一系列的问题
确保goproxy设置正确并生效

5 go 1.12版本,发现env没有GO111MODULE
只好升级go 到 1.14.1版本,正常可用

Go mod 依赖管理相关推荐

  1. Go 语言编程 — go mod 依赖包管理

    目录 文章目录 目录 go mod 依赖包管理 使用 go mod go mod 的子指令 go mod 依赖包管理 Golang 将 Modules(模块)定义为 "源代码交付和版本控制的 ...

  2. go build不从本地gopath获取_跟我一起学习go语言,包依赖管理工具go mod

    Go Module是Go会在1.12中正式推出的包管理机制. Go mod 简介 Golang一直存在一个被人诟病的问题是缺少一个官方的包依赖管理工具.从我个人的角度上来看存在两个问题: GOPATH ...

  3. Kubernetes源码下载以及go mod依赖解决

    本文主要记录下载K8s源码后,出现依赖库无法下载(冒红)的情况,自己是如何解决的. 0. 序言 0.1 本文的目录 0.2 阅读本文可以给你带来什么 个人下载K8s源码后,解决依赖库无法下载问题(id ...

  4. GoLand2021使用包依赖管理工具 Go Modules

    GoLand2021使用包依赖管理工具 文章目录 GoLand2021使用包依赖管理工具 前言 一.创建空项目 二.配置项目的GOPATH 1.设置GOPATH目录 三.使用 Go Modules 1 ...

  5. 关于依赖管理的真相 — 前端包管理器探究

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 前言 npm是Node.JS的包管理工具,除此之外,社区有一些类似的包管理工具如yarn.p ...

  6. 前端包管理器的依赖管理原理

    本文主要探究前端包管理器的依赖管理原理,希望对读者有所帮助. 前言 npm是Node.JS的包管理工具,除此之外,社区有一些类似的包管理工具如yarn.pnpm和cnpm,以及集团内部使用的tnpm. ...

  7. golang语言的包依赖管理方式 综述

    引言: 一.GOPATH简介: 二.GOPATH 模式 - go get 三.GO VENDOR 模式 go vender 之 dep 一· 优势: 二· 操作使用 三· 问题 四.Go Module ...

  8. Go语言go modure的使用以及第三方包的依赖管理

    Go语言go modure的使用以及第三方包的依赖管理 Go modure介绍 环境 使用 Go modure介绍 go modules 是 golang 1.11 新加的特性,主要用来进行项目包的管 ...

  9. GO 依赖管理工具go Modules

    以前写过一篇关于go管理依赖包工具 dep的文章,当时认为dep将会成为官方依赖工具,现在看来是自己图样图斯内幕破了,正如官方一直提到dep是"official experiment&quo ...

最新文章

  1. css火狐 hover 图片会重新请求,在“unhovering”之后使CSS Hover状态保持不变
  2. flume源码学习4-SourceRunner与ExecSource实现
  3. 笔记-项目整体管理-变更管理-变更管理的原则
  4. 提高 服务器 内存 利用率_怎样提高AI服务器的利用率
  5. 解决Select2控件不能在jQuery UI Dialog中不能搜索的bug
  6. js中小数取整数(向上、向下取整数,四舍五入取整数的实现)
  7. rk3188开机失败(ump_file_open() 251)
  8. 解决:Xshell如何修改默认的登录用户,自动跳转到密码界面
  9. 数学教材里的神秘数表在国外红出圈,网友:引人入胜、猜不到结局
  10. Python稳基修炼之计算机等级考试易错概念题1(含答案与解析)
  11. 有着 30 多年经验的程序员最终被辞退了
  12. FPGA内部资源总结
  13. 兼容ie\firefox\chrome的cursor
  14. chown: `mysql#039;: invalid user_centos无法正常启动,报chown: invalid user:'root:root'
  15. 整合Springboot+BlazeDS+Spring+Flex
  16. godaddy服务器内网站转移,2021年Godaddy最新域名转出教程 | Godaddy美国主机中文指南...
  17. win10服务器文件夹显示不全,Win10系统文件/文件夹图标显示不正常的解决方法
  18. 前端微信签名验证工具_微信网页开发如何完成签名校验
  19. 软件评测师考试学习计划
  20. 数据结构与算法---均摊时间复杂度

热门文章

  1. 精益生产培训对企业有哪些作用?
  2. 408 计算机组成原理 知识点总结
  3. 【有声典藏】于丹论语
  4. 反沙箱CobaltStrike木马加载器分析
  5. 【信号与系统】笔记(4-2)拉普拉斯变换的性质
  6. 产品创新设计:品牌价值提升的主要途径
  7. Pads solder mask层和paste mask的区别理解
  8. altium designer 中的top/bottom solder和top/bottom paste mask
  9. html 卡片拖动自动排列,vue卡片拖拽、自动排列交换位置、拖拽数据存取
  10. Netfilter 网桥日志