go官方包依赖管理工具之mod
1.1、go mod是什么
go mod 是Golang 1.11 版本引入的官方包(package)依赖管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。
之前Golang 主要依靠vendor和GOPATH来管理依赖库,vendor相对主流,但现在官方更提倡go mod。
1.2、go mod初始化及使用
下载官方包1.11(及其以上版本将会自动支持gomod) 默认GO111MODULE=auto(auto是指如果在gopath下不启用mod)
Golang 提供一个环境变量 GO111MODULE 来设置是否使用mod,它有3个可选值,分别是off, on, auto(默认值),具体含义如下:
off:
查找vendor和gopath目录 on:
使用gomodule 忽略gopath目录 auto: 如果当前目录不在gopath目录并且当前目录下有go.md文件, 则使用GO111MODULE,否则使用GOPATH mode
修改 GO111MODULE 的值的语句是:set GO111MODULE=on
在使用模块的时候, GOPATH 是无意义的,不过它还是会把下载的依赖储存在 GOPATH/src/mod 中,也会把 go install 的结果放在 GOPATH/bin(如果 GOBIN 不存在的话)
go mod download
下载模块到本地缓存, 缓存路径:$GOPATH/pkg/mod/cache go mod edit
提供了命令版编辑go.mod的功能, 例如 go mod edit -fmt go.mod 会格式化go.md go mod graph
把模块之间的依赖图展示出来 go mod init
初始化模块 go mod tidy
增加缺失的包, 移除无用的包 go mod vendor
把依赖拷贝到vendor目录下 go mod verify
确认依赖关系 go mod why
解释为什么需要包和模块
注意有几个坑的地方:
go mod 命令在 $GOPATH 里默认是执行不了的,因为 GO111MODULE 的默认值是 auto。默认在$GOPATH 里是不会执行, 如果一定要强制执行,就设置环境变量为 on。
go mod init 在没有接module名字的时候是执行不了的,会报错 go: cannot determine module path for source directory。可以这样执行:
go mod init github.com/lanlang/hello
更多命令:
# 查看module下的所有依赖
go list -m all # 更新为执行版本依赖
go get rsc.io/sampler@v1.3.1 # 将依赖复制到项目目录vendor文件夹下
go mod vendor # 忽略cache中的包, 只使用vendor目录中的依赖进行编译
go build -mod=vendor # 开启module
windows:
set GO111MODULE=on linux:
export GO111MODULE=on
go官方包依赖管理工具之mod的更多相关文章
- golang多个项目时如何配置GOPATH,使用gb包依赖管理工具,不同项目配置不同的GOPATH的
golang多个项目时如何配置GOPATH,使用gb包依赖管理工具,不同项目配置不同的GOPATH的 1:执行脚本setGoPath.sh#!/bin/bashif [[ $GOPATH =~ .*$ ...
- Go 包依赖管理工具 —— govendor
govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...
- PHP的包依赖管理工具Composer简介
composer是一个基于项目的依赖管理器,负责将php项目的所依赖的包和库安装在项目的目录中,默认不会不会安装任何数据到全局.他用于取代之前pear工具 1 安装Composer curl -sS ...
- Golang modules包依赖管理工具
初始化 执行go mod init module-name,其中module-name为包名字,执行完后会生成go.mod文件,如下 module module-name go 1.13 包管理 使 ...
- Golang 包依赖管理工具
1.godep:https://studygolang.com/articles/9877 2.dep:https://studygolang.com/articles/10589 3.glide:h ...
- Golang依赖管理工具: go module 详解
Golang依赖管理工具: go module (go1.11+) 大多数语言都会有包管理工具,像Node有npm,PHP有composer,Java有Maven和Gradle. 可是,Go语言一直缺 ...
- composer php依赖管理工具
#composer是什么 Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. composer出现之前我们php项目依赖管理大部分都是手动 ...
- Golang依赖管理工具:glide从入门到精通使用
这是一个创建于 2017-07-22 05:33:09 的文章,其中的信息可能已经有所发展或是发生改变. 介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题.Java有牛逼轰轰 ...
- Go依赖管理工具 - dep
https://segmentfault.com/a/1190000013561841 Go依赖管理工具 Go dependency management tool 环境要求 Golang >= ...
- Composer : php依赖管理工具
原始时代 我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了 总结如下 代码 ...
随机推荐
- vue router路由配置,元信息meta的使用-登录拦截验证
原文来自 vue router路由配置,元信息meta的使用-登录拦截验证_shenroom的博客-CSDN博客 看原文排版更舒服,我只是记录一下 路由基本配置1.在router文件夹中找到 inde ...
- JAVA开发常见问题整理(持续更新)
maven项目出现:"致命错误: 在类路径或引导类路径中找不到程序包 java.lang"的解决方法 原文地址:https://www.cnblogs.com/xuehuashan ...
- OCR技术的昨天今天和明天!2023年最全OCR技术指南!
OCR是一项科技革新,通过自动化大幅减少人工录入的过程,帮助用户从图像或扫描文档中提取文字,并将这些文字转换为计算机可读格式.这一功能在许多需要进一步处理数据的场景中,如身份验证.费用管理.自动报销. ...
- 工具 – VS Code Extensions
前言 分享我用着的 Extensions. Angular Language Service 不用介绍,用 Angular 的必装. Better Comments 让注释有多点颜色 more col ...
- CSS – min(), max(), clamp()
介绍 它们类似 calc(). 用来通过 formula 输出一个值. 用于 font-size, width, height 之类的, 这些地方. 非常适合用来做 RWD 哦 (特别是 font-s ...
- SQL Server – History Table (Audit/Archive Table)
前言 续上一篇的 Soft Delete 后, 我们继续来看看 History Table (Audit/Archive Table). Archive Table 市场上有了这样叫, 但我觉得它比较 ...
- Tomcat——基本使用(下载、安装、卸载、启动、关闭)
Tomcat--基本使用 1.下载安装(8.5版本为企业最常用版本) 下载地址:https://tomcat.apache.org/download-80.cgi (官网 ...
- RTThread内对##连接符和#转字符串这俩符号的使用
早就知道这俩符号的意思,最近翻看代码又看到了,仍然觉得熟悉又陌生,主要是自己平时写代码对这俩符号用的比较少.于是特地做个实验,加深下理解.可记的东西不多,这篇随笔算是随手一写吧. 上实验代码: 来源: ...
- nextjs 的函数,参数,属性装饰器的使用
// 属性装饰器 const doc1:PropertyDecorator = (target:any,val: string | symbol) => { console.log(target ...
- 47.vue-router的钩子函数
钩子函数就是路由导航守卫 : 有 7 个守卫,分为 3 类 : 全局守卫:在全部的组件生效: beforeEach 全局前置守卫 afterEach 全局后置守卫 解析守卫 组件守卫:在某个组件生效 ...