教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang Modules 依赖管理工具使用

golang Modules 依赖管理工具使用

发布时间:2021-12-06   编辑:jiaochengji.com
教程集为您提供golang Modules 依赖管理工具使用等资源,欢迎您收藏本站,我们将为您提供最新的golang Modules 依赖管理工具使用资源
<h3 id="go-mod是什么">Modules是什么</h3>

Golang从诞生之初就一直有个被诟病的问题:缺少一个行之有效的“官方”包依赖管理工具。其原因是在Google内部,所有人都是在一个代码库上进行开发的,因此并不是非常需要。但Golang变成一个社区化的工程语言之后,这个问题被放大了。

<ol><li>GOPATH不符合一般开发者习惯,大部分人更习惯maven、node modules、Nuget之类的包管理方式</li><li>GOPATH无法有效的管理版本依赖,没有一个地方能够表明依赖包的具体版本号,无法形成有效的版本配套关系</li></ol>

在Golang 1.5发布了vendor特性之后,社区在vendor基础上开发了很多包管理工具,例如glide, dep(这个最悲催,已经半官方了,结果横刀杀出来一个go mod),等等,具体参见拙文go依赖包管理工具对比 。但说实话,都不是非常满意。 

而Golang 1.11 版本引入的 go mod ,其思想类似maven:摒弃vendor和GOPATH,拥抱本地库。我们今天就来尝试使用该种方式来进行本地包管理。

为了简化操作我们使用goland来进行详细操作:

不使用modules流程:

<pre class="has"><code class="language-Go">package main import ( "github.com/gogf/gf/g/encoding/gjson" ) func main() { } func GetText(data string) string { if j, err := gjson.DecodeToJson([]byte(data)); err != nil { panic("Get Text Error") } else { var result = j.GetString("results.0.values.text") return result } }</code></pre>

默认使用 /home/go 作为GOPATH 的下载地址并引用

 我们这里打开Modules设置:

<pre class="has"><code class="language-html">Create go.mod file 点击后生成 go.mod文件跟命令是一样的效果: ​​​​​go mod init [你的项目名] 新创建文件内容如下:</code></pre> <blockquote> <pre class="has"><code class="language-html">module "demo"</code></pre> </blockquote>

之后在需要引用的包下面 option 空格

 

从原来的GOPATH变更为Gi Modules

go.mod文件:

<pre class="has"><code>module demo go 1.12 require github.com/gogf/gf v1.6.9 </code></pre>

生成go.sum:

<pre class="has"><code>github.com/gogf/gf v1.6.9 h1:23jjC/oY1E1BNVMZ8wB1jkA3tT2BEtwdf/lHwxB2yjI= github.com/gogf/gf v1.6.9/go.mod h1:qJRcq0s3RskjJIZKsSHjZkpxw91rd0EAh 4CUbawbXQ= </code></pre>

go.sum是一个模块版本内容的校验值,用来验证当前缓存的模块。go.sum包含了直接依赖和间接依赖的包的信息,比go.mod要多一些。 

依赖包下载位置 

 禁用GOPATH:

设置构建选项:

 当然以上全部都是最基本的使用方法,如果想了解更多细节请查看官方文档:

https://github.com/golang/go/wiki/Modules

https://blog.jetbrains.com/go/2019/01/22/working-with-go-modules/

https://arslan.io/2018/08/26/using-go-modules-with-vendor-support-on-travis-ci/

 

到此这篇关于“golang Modules 依赖管理工具使用”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang Modules 依赖管理工具使用
Go1.13:使用go mod 管理依赖, 提示cannot find module providing package或cannot find main module
04.Go项目布局-你如何设计项目结构
Golang包管理工具govendor的使用
Go 语言包管理机制深入分析
Golang包管理详解
golang版本工具GVM 和包管理工具go mod原理讲解
GO 依赖管理工具go Modules(官方推荐)
Golang从入门到进阶系列:Go Modules机制
go godep包管理工具详解

[关闭]
~ ~