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