go1.13 mod 实践和常见问题

实践建议

0,go mod 要求所有依赖的 import path 的path 以域名开头,如果现有项目转1.13的go mod 模式,且不是以域名开头则需要修改。
 eg: code.be.mingbai.com/tools/any_test_del_free
1, 既然已经更新到1.13了,建议直接设置GO111MODULE="on" ,即开启go mod 模式。因为这也是以后的主流,path会慢慢的消失。
go env -w GO111MODULE=on
2,给go mod 设置代理, 并添加私有域名
go env -w GOPROXY=http://goproxy.cn,direct

go env -w GOPRIVATE=*.mingbai.com

私有域名的配置会让go mod 不走代理,而是用版本控制工具(git)的方式去拉去依赖。解决拉内网或者本地代码的问题。
3,新建项目,或者是已有项目转为go mod 模式的 init 建议

go mod init 域名/组名/项目名

eg: code.be.mingbai.com/tools/any_test_del_free

4,sdk 发布v2、v3 等版本,使其可用于1.13模式的依赖
参看 常见问题 第4条。

常见问题

1,报错: XXXX found,but does not contain package XXXX
如果不止一处报错,可以检查下 go mod init ‘name’ , 的name 是否为 域名/组名/项目名(比如code.be.mingbai.com/tools/soa) 的严格模式。如果不是可以改为这种模式再试一下。

如果仅一两处报错,还有可能是所引用的包有问题,建议检查包的目录结构。

如果是已有项目升级到go1.13,还有可能是新依赖包的的版本大范围不对。从现有的依赖文件里(比如glide.lock)导入依赖版本可以解决。
2, 报错: malformed module path "XXXX": missing dot in first path element
go1.13  mod 要求import 后面的path 第一个元素,符合域名规范,比如code.be.mingbai.com/tools/soa

即使是本项目下的其他包

如果无法使用域名,可以考虑使用replace,但不建议这样做。

eg: replace  code.be.mingbai.com/tools/soa  =>  ../../tools/soa
3,报错: require XXXX: version "v3.2.1" invalid: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v3
其他包,go1.13,对import有严格的语义要求,导入依赖包的V2或再v2之后的版本,需要在‘import path’ 的path 包好 ‘/v2’ 等字样。

更改import path 后 ,go get 并指定版本如果仍然会报错,执行go mod tidy 会自动更新。(报错原因,有待进一步确认)

如果所依赖的包,没有提供这种依赖方式,可以指定依赖master的最新commit。

eg: go get  code.be.mingbai.com/tools/soa@master

    @分支名,或者commitId等
4,sdk项目维护方发版,使 sdk 的v2、v3 版本 可用于go1.13 mod 模式的显式依赖

注意: 不使用以下两种发版方式,也可以依赖到v1 以上版本,不过需要通过分支名或者commitId 去引入依赖

eg: go get code.be.mingbai.com/tools/any_test_del_free@c92ca0db

     go get code.be.mingbai.com/tools/any_test_del_free@master

显式的两种方式

1,可以直接打标签,发布包新版本和其它包管理工具基本一致,不过打标签之前需要在 go.mod 中写入相应的版本号:
$ go mod edit --module=code.be.mingbai.com/tools/any_test_del_free/v2
 
$ cat go.mod
module code.be.mingbai.com/tools/any_test_del_free/v2
 
go 1.13
 
.......
 
 
 
 
# 此时使用方的依赖引入:
import (
   "code.be.mingbai.com/tools/any_test_del_free/v2/xlog" # 这一行
   sw "code.be.mingbai.com/tools/any_test_del_free/xsensitive_words"
)

官方推荐将上述过程在一个新分支来避免混淆,那么类如上述例子可以创建一个 v2 分支,但这个不是强制要求的。

2,还有一种方式发布新版本,那就是在主线版本种加入 v2 文件夹,相应的也需要内置 go.mod 这个文件。
$ mkdri v3
$ .....coding......
$ go mod intit code.be.mingbai.com/tools/any_test_del_free/xsensitive_words/v3
$ go mod tidy
$cat go.mod
 
 

module code.be.mingbai.com/tools/any_test_del_free/xsensitive_words/v3

go 1.13
......

 
 
 
 
$ .......commit, push and so no....
$ tree projectPath.
├── linked_sensor.go
├── README.md
├── sensitive_words.go
├── sensitive_words_test.go
├── sensor.go
└── v3
    ├── go.mod
    ├── linked_sensor.go
    ├── README.md
    ├── sensitive_words.go
    ├── sensitive_words_test.go
    └── sensor.go
 
 
# 此时使用方的依赖引入:
import (
   "code.be.mingbai.com/tools/any_test_del_free/v2/xlog"
   sw "code.be.mingbai.com/tools/any_test_del_free/xsensitive_words/v3" # 这一行
)

```
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • Go Module是Go会在1.12中正式推出的包管理机制。 Go mod 简介 Golang一直存在一个被人诟病...
    会飞的鲶鱼阅读 47,807评论 1 14
  • 备注:本猿翻译水平有限,请各位看客见谅 翻译内容: go1.11 版本中 go help modules文档内容 ...
    星云数联阅读 2,504评论 0 1
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,727评论 0 38
  • 今天了解到两个比较中意的课程---如何制定目标和如何做手帐。这也是我明年的计划。有了目标,还需要一步一步的去实施。...
    读读写写萧十一阅读 79评论 0 1
  • 2018年10月2日晚上六点,阜新团队的部分伙伴在新租下的工作室召开了晓艺老师阜新之行分享会。晓艺老师是本溪的准中...
    王文琦阅读 176评论 0 1