GO111MODULE
GO111MODULE的功能:
//为了解决项目不用放在go的src目录下,src应该放一些官方的包,而不应该放项目
//模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,
//包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。 1.GO111MODULE介绍
GO111MODULE 有三个值:off, on和auto(默认值)
GO111MODULE=off //go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on //go命令行会使用modules,不会去GOPATH目录下查找。
GO111MODULE=auto //默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
//当前目录在GOPATH/src之外且该目录包含go.mod文件。
//当前文件在包含go.mod文件的目录下面。 //当modules 功能启用时,依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的 module。 go mod 命令:
download //下载依赖包
edit //编辑go.mod
graph //打印模块依赖图
init //在当前目录初始化mod
tidy //拉取缺少的模块,移除不用的模块
vendor //将依赖复制到vendor下
verify //验证依赖是否正确
why //解释为什么需要依赖 //开启模块支持
set GO111MODULE=on //设置代理,windows是set,Lnix是export
set GOPROXY=https://goproxy.io //阿里云镜像
set GOPROXY=https://mirrors.aliyun.com/goproxy/
export GOPROXY=https://mirrors.aliyun.com/goproxy/ //go1.13版本可以使用以下方法
go env -w GOPROXY=https://goproxy.io,direct
go env -w GO111MODULE=on
go env -u 恢复初始设置 2.测试
//1.在GOPATH之外,新建文件夹,新建main.go
package main import (
"github.com/kataras/iris" "github.com/kataras/iris/middleware/logger"
"github.com/kataras/iris/middleware/recover"
) func main() {
app := iris.New()
app.Logger().SetLevel("debug")
app.Use(recover.New())
app.Use(logger.New())
app.Get("/", func (ctx iris.Context){
ctx.HTML("Hello========================")
}) app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
} //2.在main.go所在目录下打开cmd
//初始化mod,生成go.mod
go mod init 文件夹名
//go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。
//go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。 //go.mod 提供了module, require、replace和exclude 四个命令
//module 语句指定包的名字(路径)
//require 语句指定的依赖项模块
//replace 语句可以替换依赖项模块
//exclude 语句可以忽略依赖项模块 //go.mod文件如下:
//module 123
//
//go 1.13 //go mod tidy需要的依赖自动生成 require 语句
//go mod tidy 从 go.mod 删除不需要的依赖、新增需要的依赖,这个操作不会改变依赖版本
go mod tidy //加载依赖,可以省略这一步
//go.mod如下:
//module 123
//
//go 1.13
//
//require (
//github.com/astaxie/beego v1.12.1
//github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
//) //go 会自动生成一个 go.sum 文件来记录 dependency tree(依赖树)
//github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
//github.com/OwnLocal/goes v1.0.0/go.mod h1:8rIFjBGTue3lCU0wplczcUgt9Gxgrkkrw7etMIcn8TM=
//github.com/astaxie/beego v1.12.1 h1:dfpuoxpzLVgclveAXe4PyNKqkzgm5zF4tgF2B3kkM2I=
//github.com/astaxie/beego v1.12.1/go.mod
//。。。 //运行
go run main.go //没有go mod tidy的情况下,运行的过程中需要下载包,速度很慢,可以设置阿里云的镜像
//再次执行脚本 go run server.go 发现跳过了检查并安装依赖的步骤。
//可以使用命令 go list -m -u all 来检查可以升级的package,
//使用go get -u need-upgrade-package 升级后会将新的依赖版本更新到go.mod *
//也可以使用 go get -u 升级所有依赖 //生成exe文件
go build main.go //没有go mod tidy的情况下,运行的过程中需要下载包,速度很慢,可以设置阿里云的镜像 //将依赖复制到vendor下
//可以把vendork里面的文件夹复制到go的src中,这样就能在src下创建项目使用了
go mod vendor 3.解决go get命令下载包出问题
//设置GOPATH
//win10环境变量中添加,设置GOPATH,下载包的路径 //设置代理
//set GOPROXY=https://goproxy.io //下载iris
//下载iris的所有依赖包
//这些包并没有下载到 GOPATH/src 目录下,而是在 GOPATH/pkg/mod 目录中
//-x可以看到执行过程
go get github.com/kataras/iris
//-u 强制使用网络去更新包和它的依赖包
//-v 显示执行的命令
go get -v -u github.com/kataras/iris
GO111MODULE的更多相关文章
- golang版本管理工具GO111MODULE
在go1.11版本前,想要对go语言包进行管理,只能依赖第三方库实现,比如Vendor,GoVendor,GoDep,Dep,Glide等等. 1. 开启GO111MODULE 用环境变量 GO111 ...
- GO111MODULE的设置(及GOPROXY)
环境:win7 go1.13.1 早听说GO111MODULE大名,今天才测试成功,步骤如下: 因为我的Go version >= 1.13,直接用go env -w 设置(注意大小写) go ...
- gin+gorm
在[环境变量]中添加如下[用户变量]/[系统变量]:GO111MODULE,值为on go mod init目录 在项目中新建文件main.go,并添加测试代码 package main import ...
- Go命令官方指南【原译】
启动错误报告 编译包和依赖项 删除目标文件和缓存的文件 显示包或符号的文档 打印Go环境信息 更新包以使用新API Gofmt(重新格式化)包源 通过处理源生成Go文件 下载并安装包和依赖项 编译并安 ...
- Go依赖模块版本之Module避坑使用详解
前提 对于Go的版本管理主要用过 glide,下面介绍 Go 1.11 之后官方支持的版本管理工具 mod. 关于 mod 官方给出了三个命令 go help mod.go help modules. ...
- go-mod 入门
Q群有人问go mod 问题,自己也忘了些.顺便再整理下. GO111MODULE可以设置为三个字符串值之一:off,on或auto(默认值). off 则go命令从不使用新模块支持.它查找vendo ...
- Golang的模块管理Module
Golang 1.11版本终于支持了官方的模块依赖管理功能,1.11以前想要实现依赖管理只能够通过借助第三方库来实现,1.11以前的版本Golang项目必须依赖以GOPATH,从当前版本开始Golan ...
- 一键解决 go get golang.org/x 包失败
问题描述 当我们使用 go get.go install.go mod 等命令时,会自动下载相应的包或依赖包.但由于众所周知的原因,类似于 golang.org/x/... 的包会出现下载失败的情况. ...
- 再探go modules:使用与细节
还有半个月go1.12就要发布了.这是首个将go modules纳入正式支持的稳定版本. 距离go modules随着go1.11正式面向广大开发者进行体验也已经过去了半年,这段时间go module ...
随机推荐
- py 二级习题(加密与解密)
题目: 1.比如说,我想 “我喜欢月月” 这句话加密即:将字符串中的每个字符的unicode值全都向后移动三位,即unicode 值加3,然后输出. 2.将按照上述规则加密的文字解密即:将字符 ...
- mysql 数据库中存在重复记录,删除保留其中一条
DELETE FROM people WHERE peopleName IN ( SELECT peopleName FROM people GROUP BY peopleName HAVING ) ...
- PAT (Basic Level) Practice (中文)1076 Wifi密码 (15 分)
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己作答,每两日一 ...
- 设置 myeclipse 编码格式
参考网址:https://jingyan.baidu.com/article/77b8dc7fc6e1626174eab6bb.html
- jvm gc 调优 实战
非常不错的文章们 转自: 中文:http://blog.csdn.net/dragonassassin/article/details/51010947 http://josh-persistence ...
- ContestHunter 1201 最大子序和
描述 输入一个长度为n的整数序列,从中找出一段不超过m的连续子序列,使得整个序列的和最大. 例如 1,-3,5,1,-2,3 当m=4时,S=5+1-2+3=7当m=2或m=3时,S=5+1=6 输入 ...
- npm命令笔记-----转自网络,仅供自己查看使用
npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装 的包. npm常用指令 1.npm ...
- HCTF2018-admin[Unicode欺骗]
看源码发现 在修改密码,登录,注册时都有都用strlower()来转小写 看了网上师傅的wp,经验之谈,python中自带转小写函数lower(),但这里使用strlower(),可能存在猫腻. 跟进 ...
- 六、JVM之垃圾回收
GC日志 -Xmx1024m -Xms1024m -XX:+PrintGCDetails Heap PSYoungGen total 305664K, used 26214K [0x00000000e ...
- JDBC——Statement执行SQL语句的对象
Statement该对象用于执行静态SQL语句并返回它产生的结果.表示所有的参数在生成SQL的时候都是拼接好的,容易产生SQL注入的问题 PreparedStatement对象是一个预编译的SQL语句 ...