go mod管理项目

作者: 五岁小孩 | 来源:发表于2021-03-01 08:54 被阅读0次

    go mod管理项目

    准备环境

    • 全局开启module管理

      # 自动 (推荐)
      # go命令行将会根据当前目录来决定是否启用module功能
      # 当前目录在GOPATH/src之外且该目录包含go.mod文件
      # 当前文件在包含go.mod文件的目录下面
      go env -w GO111MODULE=auto
      export GO111MODULE=auto
      # 开启
      go env -w GO111MODULE=on
      export GO111MODULE=on
      # 关闭
      go env -w GO111MODULE=off
      export GO111MODULE=off
      
    • 设置代理

      go env -w GOPROXY=https://goproxy.cn
      export GOPROXY=https://goproxy.cn
      
    • 项目开启module管理

      # goland配置
      file->setting->go->go Modules
      打勾-Enable Go Modules integration
      # 配置 代理,若配置了全局则可忽略
      Environment :https://goproxy.cn
      

    开始使用

    • 初始化项目

      #进入项目
      cd /home/gopath/src/itxj/test
      # 初始化go mod
      go mod init
      # 拉取依赖 依赖包会自动下载到$GOPATH/pkg/mod,多个项目可以共享缓存的mod
      go mod download
      # 整理依赖关系
      go mod tidy
      # 缓存到vendor目录 从mod中拷贝到项目的vendor目录下,这样IDE就可以识别了!
      go mod vendor
      
    • .mod配置

      # 初始化后建议编译下拉取所需依赖
      # 或执行以下指令整理依赖包
      go  mod tidy
      # 缓存到vendor目录
      go mod vendor
      
      # 引用本地其他项目依赖
      # 在go.mod文件的required()后添加
      replace (
        source latest => target latest
      )
      #如引用本地ew-tool项目,注意引用的项目也需要被go mod管理
      replace (
        eastwan.com/ew-tool => ../ew-tool
      )
      # go.mod 提供了module, require、replace和exclude四个命令
      module 语句指定包的名字(路径)
      require 语句指定的依赖项模块
      replace 语句可以替换依赖项模块
      exclude 语句可以忽略依赖项模块
      

    官方说明:除了go.mod之外,go命令还维护一个名为go.sum的文件,其中包含特定模块版本内容的预期加密哈希
    go命令使用go.sum文件确保这些模块的未来下载检索与第一次下载相同的位,以确保项目所依赖的模块不会出现意外更改,无论是出于恶意、意外还是其他原因。 go.mod和go.sum都应检入版本控制。
    go.sum 不需要手工维护,所以可以不用太关注。

    注意:子目录里是不需要init的,所有的子目录里的依赖都会组织在根目录的go.mod文件里

    相关文章

      网友评论

        本文标题:go mod管理项目

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