Go包管理最佳实践(2019/3)
Golang的包管理经过了多种工具的演变,从go vendor,到godep
),再到dep。
这里使用的是从go v1.11开始支持的go Modules。
Go Modules具有一些优点:
- 不必须将项目目录放在GOPATH中
- 不使用vendor目录,而是统一安装到
$GOPATH/pkg/mod/cache
- build/run时,自动析出项目import的包并安装
- 初始化
在已有的项目目录中,使用go mod init <包名>
初始化。
包名通常类似github.com/golang/dep
这种格式。
如果包内有自引用,则包名需要和包内自引用名相同,才能正常导入。
这时项目中生成一个go.mod
文件。
- build/run
直接执行go build/run
,会发现项目涉及的包被自动安装了。
这时项目中新增go.sum
文件。原来的go.mod
中增加了依赖项。
【Go包管理最佳实践(2019/3)】国内使用时,
golang.org/x/crypto
等包可能装不上。可以设置Go Module Proxy解决:
export GOPROXY="https://athens.azurefd.net"
(这里使用了微软提供的代理)
示例
通过这种方式,很容易运行起来一个互联网上的Go项目。比如:
git clone https://github.com/snowlyg/IrisApiProject.git
cd IrisApiProject/
go mod init IrisApiProject
go build .
./IrisYouQiKangApi.exe~
其它
有些库使用了cgo,需要gcc编译器。
如果是在windows下,需要自行安装gcc。注意,golang只支持mingw,不能使用cygwin。
对于x64 windows:
- 下载mingw-w64
- 安装之。注意选择 Architecture=x86_64, Threads=posix, Exception=seh。
- 配置安装目录下的bin目录到环境变量。
推荐阅读
- Aone|Aone Flow 分支管理
- 周复盘20180818
- 猜猜他是谁之五|猜猜他是谁之五 de英文(包子篇)
- 大宝说目标管理
- 使用maven打包可执行jar
- Java毕业设计项目实战篇|Java项目:(小程序)物业管理系统(spring+spring mvc+mybatis+layui+微信小程)
- 阿克
- Effective|Effective C++ Chapter3-资源管理
- 【博图第七期】英国博赞思维导图管理师海伦酱第一幅《出行物品清单》
- 寇鹏飞的管理学笔记06-0610