GO|GO Modules 使用
旧项目迁移,打算使用GO Modules 作为依赖管理。
go版本 1.12
私人依赖包,如何处理
1. 创建模块的目录 ,并伸出go.mod 文件
mkdir modules2. 创建自己的package目录 如 base
go modinit modules
module其中main.go 的内容
|--- main.go
|---go.mod
|---base
|---testBase.go
package maintestBase.go 的文件内容
import "modules/base"
func main(){
base.Test()
}
package base可以看到 在任何模块的个人package的引用都必须使用 module/ 开头的路径地址。
import "fmt"
func Test(){
fmt.Println("Bast Test)
}
再任何文件的 import时,go会再当前目录向上级目录逐级查找go.mod文件,比较mod文件中的 module 名称是否与查找的引用包路径匹配,然后按照引用路径查找。
针对之前没有有使用过go mod 的项目,需要的操作步骤是
1.将原来的src 下的代码拷贝到某个GOPATH之外的目录中,比如 server
2.在server目录下 ,go mod init server ,当前模块的根目录即是 server
3.将其他文件里的个人定义的包的引用路径改为 server/XXX ,以便于可以从模块的根目录找到
4. 在命令行 执行 go build server ,可以刷新所有的引用包且编译出可执行文件
针对国内墙,无法取到某些package的情况 1. 使用 https://goproxy.io ,通过设置
文章图片
2. 通过go modreplace命令
比如golang.org/x 下面的package是无法再国内直接获取的,可以通过修改go.mod文件将地址替换为 github上的镜像,基本都可以找到
在生产的go.mod 文件里添加
replace (这样就可以从GitHub上获取对于的包文件
golang.org/x/crypto => github.com/golang/crypto latest
golang.org/x/net => github.com/golang/net latest
golang.org/x/sync => github.com/golang/sync latest
golang.org/x/sys => github.com/golang/sys
【GO|GO Modules 使用】golang.org/x/text => github.com/golang/text
)
相关文档: 1. https://roberto.selbach.ca/intro-to-go-modules/
这是Roberto Selbach大神写的这篇 Step by step的 go mod入门文章,非常好理解
2. https://github.com/golang/go/wiki/Modules
go mod的官方文档,想了解的多一点最好还是通读一下
3. https://roberto.selbach.ca/go-proxies/
最后还有一篇介绍GOPROXY的文章,比较适合对go mod熟悉之后再看
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 闲情偶记·旧乐章
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用