Go Module 引入本地自定义包

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章