Go Module 引入本地自定义包
Go Module 引入本地自定义包
参考URL: http://www.r9it.com/20190611/go-mod-use-dev-package.html
Go Module 版本规则
go modules 是一个版本化依赖管理系统,版本需要遵循一些规则,打开一个 go.mod 文件,你会发现类似下面的依赖规则:
依赖规则由两个部分组成,前面一部分是包路径,后面一部分表示的是版本号。 你会发现有两种版本号,一种是我们很熟悉的 git 标签,比如 v0.0.2,另一种就比较复杂一些,它是:版本号 + 时间戳 +hash 比如:v0.0.0-20190212224330-8d79a5489543,它其实是精准的对应着一个 git log 记录,时间是git提交的时间,后面的哈希是去提交哈希的前 12 位。
比如我当前的提交记录是这样的:
$ git log
commit 4c55783279db32be4f02e193713d5a862b96db85 (HEAD -> master, origin/master)
Author: yangjian <[email protected]>
Date: Mon Jun 10 18:34:14 2019 +0800
则我的最新版本号应该为 v0.0.0-20190610103414-4c55783279db
replace (
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 => github.com/golang/crypto v0.0.0-20190308221718-c2843e01d9a2
)
使用 replace 将远程包替换为本地包服务
module GoRoomDemo
go 1.12
require (
github.com/gin-gonic/gin v1.3.0
github.com/gohouse/goroom v0.0.0-20190327052827-9ab674039336
github.com/golang/protobuf v1.3.1 // indirect
github.com/gomodule/redigo v2.0.0+incompatible
github.com/mattn/go-sqlite3 v1.10.0
github.com/stretchr/testify v1.3.0 // indirect
golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53 // indirect
)
这是一个简单的GoRoom框架的依赖关系包, 如果我想使用本地的goroom, 只需要使用replace即可
module GoRoomDemo
go 1.12
require (
github.com/gin-gonic/gin v1.3.0
github.com/gohouse/goroom v0.0.0-20190327052827-9ab674039336
github.com/golang/protobuf v1.3.1 // indirect
github.com/gomodule/redigo v2.0.0+incompatible
github.com/mattn/go-sqlite3 v1.10.0
github.com/stretchr/testify v1.3.0 // indirect
golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53 // indirect
)
replace github.com/gohouse/goroom => /path/to/go/src/github.com/gohouse/goroom