美文网首页
Go mod 管理

Go mod 管理

作者: 火星云s1 | 来源:发表于2019-12-17 15:43 被阅读0次

扯淡的话,可以跳过
闲来无事,把公司项目的包管理做了一个升级,其实好久之前就想去做升级,一直懒得摆弄,就没当回事,知道本地vendor遇到一些莫名的问题,PC端代码中可以看到github/xxx一个包,包括代码等都可以查看到,push到远程后,vendor里面只是一个@版本号之类的东西~,并没有代码,在服务端编译的时候,如果没有一些特殊配置(梯子),这个vendor+版本号的玩意是会出问题,提示找不到github/xxx这个包。。后来干脆把之前的依赖重搞一遍省的之后头疼😓

go mod 简单介绍

  • go语言自诞生起,包依赖管理一直是被各大社区吐槽的点
    项目必须放在GOPATH下,包括依赖的包也需要放GOPATH下
    如果有多个项目,需要依赖不同版本的包,就会很蛋疼
  • 非官方包管理的出现
    • govendor
    • dep
      用法不详述了
      基本就是自动拉包放置在vendor下

在经历了前期很多个版本的混乱下 go官方在golang 1.11版本后加入了go mod,直接砍掉了之前的GOPATH设计,也支持vendor模式,个人觉得真的比之前好用了很多

go mod 说明

  • 在同一目录下的项目(非GOPATH/src目录下),go 会自动去检测,该项目下的go mod(不使用IDE,可以在$GOPATH/mod目录下查看)

    gomod测试目录
    1. p1包执行 go mod init xxx/xxx/p1,此时就会生成一个module
    2. p2去使用p1包如下所示(看这张图的意思,只是想解释一下mod的意思,其实和我们使用java 或者 php 时引入的包一个含义,go项目想要被其他项目引用,需要把自己变成一个模块,也就是需要执行 go mod init xxx/xxx/p1)
      p2使用
      p2使用

在了解了mod的意思之后,其实使用起来很便捷

准备工作

  • GO111MODULE=off: 不适用 modules 功能。
  • GO111MODULE=on: 使用 modules 功能,不会去 GOPATH 下面查找依赖包。
  • GO111MODULE=auto: Golang 自己检测是不是使用 modules 功能。

go mod 使用方式

  • 在项目目录下执行
    go mod init git.staff.qsc.com.cn/common/gateway
    go mod tidy 查找并下载gateway项目依赖的所有包
    go mod vendor 将该模块使用的第三方包移动到vendor下(支持vendor的形式是为了打包更快,大部分公司都已经使用自动化集成,在不依赖工具、环境的情况下,还是将包约束到vendor下比较合理)
  • 一般执行上面三个步骤就完成了mod模块化管理,但其实很多时候并没有这么顺利,基本遇到的问题都是网络代理的问题


    proxy

最后

文章 只是很粗略的介绍了下基本使用,详细内容可参考知乎大神的帖子https://zhuanlan.zhihu.com/p/82109036

相关文章

  • 50.Go Mod 来创建 Gin 项目

    开启 Go mod 初始化 Go mod 使用Go mod 进行包管理,可以在$GOPATH/src 之外创建项目...

  • Go Module

    Go 1.11 之后官方支持的版本管理工具 mod。 mod 官方给出了三个命令 go help mod、go h...

  • 说一说go mod

    [toc] 说一说go mod 写在前面,我们要切换到go mod吗 go mod是官方力推的go模块依赖管理的工...

  • 你离告别GOPATH只差一步

    使用go mod 管理包代替gopath管理 我使用的编辑器是 goland,下面开始goland的go mod设...

  • Go mod的简单实践

    Go mod简介: Go mod是官方推荐的包管理方式,开始于go1.11,在go1.12版本基本稳定,go1.1...

  • Go语言 依赖管理

    Go语言 依赖管理 go依赖管理的三个阶段 GOPATH GOVENDOR go mod GOPATH默认在~/g...

  • go mod 私有仓库管理

    go mod管理下添加私有库 go get -v mygitlab.com/name/repository go....

  • Apache pulsar/pulsar-client-go 部

    pulsar-client-go 部署安装 目前,pulsar-client-go采用 go mod 进行包管理,...

  • Go mod 管理

    扯淡的话,可以跳过闲来无事,把公司项目的包管理做了一个升级,其实好久之前就想去做升级,一直懒得摆弄,就没当回事,知...

  • GO 导入自定义包

    一 导入的包里不能带有 main 函数,否则会报下面的错误 代码 go mod 使用go mod 管理各种依赖,当...

网友评论

      本文标题:Go mod 管理

      本文链接:https://www.haomeiwen.com/subject/fqpsnctx.html