golang引用自定义模块(类似java的maven)——github版

在golang中,可以通过 go mod的mod文件中添加依赖,依赖其他模块。这些模块既可以是来自第三方的模块,也可以是来自自己的模块。

例如:

下面代码的含义是 模块foolDealer 依赖模块 github.com/google/wire 和 github.com/wild46cat/golib

module foolDealer

go 1.13

require github.com/google/wire v0.4.0

require github.com/wild46cat/golib v0.0.0-20191224150240-e041ab0d7835

首先说一下,这里的wire模块是google的模块,而golib模块,是我自己写的模块,方便自己调用。

好,下面上货。讲解一下如何处理golang的模块

1、首先新建一个项目golib,用于存储自己的公共代码。

需要注意的是,这里的module的名称应该是 github.com/wild46cat/golib

module github.com/wild46cat/golib

go 1.13

 2、上传到github上。

3、新建一个测试项目foolDealer

在测试项目的go.mod文件中添加依赖

require github.com/wild46cat/golib latest

注意,这里如果不清楚有什么版本,可以直接用latest代替。

然后执行命令

go mod vendor
go mod download 
go mod tidy

执行后,能够看到,会出现一个vendor文件夹(当然,代码中应该有对应的import "github.com/wild46cat/golib/utils")。

4、查看当前go.mod文件中是否发生了变化

module foolDealer

go 1.13

require github.com/google/wire v0.4.0

require github.com/wild46cat/golib v0.0.0-20191224150240-e041ab0d7835

5、在代码中引用能够使用

package src

import (
   "github.com/google/wire"
   "github.com/wild46cat/golib/utils"
   "sync"
)

func main() {
   wire.Build()
   utils.SToI64("aa")
}

 

关于引入模块的版本问题

默认如果没有打tag的话,当有最新的提交到master分支上,那么go mod会引用对应的版本号-时间戳-提交id作为对应的版本。例如:

v0.0.0-20191224150240-e041ab0d7835

如果项目有tag那么会下载最新version

如何打tag

1、首先本地打tag

git tag -a v1.0.0 HEAD -m 'v1.0.0'
或者
git tag -a v1.0.0 -m 'v1.0.0'

如果发现已经存在tag,想要覆盖tag可以使用
git tag -a -f v1.0.0 HEAD -m 'v1.0.0'

2、推送到远程上

推送到远端
git push origin v1.0.0
推送所有tag到远端
git push origin --tags

查看远程tag
git ls-remote
From git@github.com:wild46cat/golib.git
e041ab0d78356ecbce9eee0d2531b339bc590f49        HEAD
e041ab0d78356ecbce9eee0d2531b339bc590f49        refs/heads/master
f594e1e121bd91556f7a40d229cc59ebb7bbe7f2        refs/tags/v1.0.0
e041ab0d78356ecbce9eee0d2531b339bc590f49        refs/tags/v1.0.0^{}

其中v1.0.0有多个,带有^{}的是当前tag对应的提交版本

3、删除远程tag

git push origin :refs/tags/v1.0.0

关于tag和无tag切换问题

 关于从有tag变为没有tag时的处理。一般我们在刚刚还是开发的时候,不需要指定tag,直到我们的模块稳定后再使用打tag的方式。那么这样就会出现从有tag到没有tag或者从没有tag到有tag的过程。这时候我们首先要把需要引入的包改为latest,同时执行下面的命令

go mod tidy
go mod download
go mod vendor

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值