目录背景GoPATH 模式GO Vendor模式Go Module模式依赖管理三要素依赖配置 go.modgo mod命令go get命令快速使用go module小结背景 开发项
开发项目时应学会站在巨人的肩膀上,即有效利用开发组件进行或工具提升自己的研发效率
对于较简单的单体函数而言,只需要依赖原生的SDK即可完成开发
对于实际开发的工程较于复杂,应将精力投放在实现的业务逻辑之上
GOPATH为环境变量 包含bin、pkg、src三部分
$GOPATH:项目根路径
运行方式:
所有工程代码要求放在GOPATH/src目录下 工程本身也将作为一个依赖包,可以被其它 GOPATH/src 目录下的工程引用 在 $GOPATH/src
下进行 .go 文件或源代码的存储,我们可以称其为 GOPATH 的模式
缺点:
$GOPATH/src
目录下,不在当前目录则不能编译解决 GOPATH模式 所有项目都在$GOPATH/src
目录的问题 可以随处可以创建项目,不用扎堆 src 目录下
原理:本地化构建
在每个项目下都创建一个vendor目录,每个项目所需要的以来都会下载到自己的vendor目录下。在使用包时,会先从当前项目下的vendor目录查找,然后再从GOPATH中查找,都没有找到最后才在GOROOT中查找(依赖寻址方式:vendor -> GOPATH)
缺点:
1.16版本后默认开启的模式
通过go.mod
文件管理依赖的版本
通过go get/go mod
指令工具管理依赖包
工程不用全放在gopath/src
目录下
定义版本规则和管理项目依赖关系
主要改动:
$GOPATH/pkg/mod
目录下go.mod
文件,来应用$GOPATH/pkg/mod
go.mod
Proxy
go get/mod
module example.com/foobar
go 1.16
require (
example.com/apple v0.1.2
example.com/banana v1.2.3
example.com/banana/v2 v2.3.4
example.com/pineapple v0.0.0-20190924185754-1b0db40df49a
)
exclude example.com/banana v1.2.4
replace example.com/apple v0.1.2 => example.com/rda v0.1.0
replace example.com/banana => example.com/hugebanana
go.mod
是启用了 Go moduels 的项目所必须的最重要的文件,它描述了当前项目(也就是当前模块)的元信息,每一行都以一个动词开头,目前有以下 5 个动词:
module
:用于定义当前项目的模块路径。go
:用于设置预期的 Go 版本。require
:用于设置一个特定的模块版本。exclude
:用于从使用中排除一个特定的模块版本。replace
:用于将一个模块版本替换为另外一个模块版本。这里的填写格式基本为包引用路径+版本号,另外比较特殊的是 go $version
,目前从 Go1.16 的代码里来看,还只是个标识作用,暂时未知未来是否有更大的作用。
常用的go mod命令如下:
go mod download 下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
go mod edit 编辑go.mod文件
go mod graph 打印模块依赖图
go mod init 初始化当前文件夹, 创建go.mod文件
go mod tidy 增加缺少的module,删除无用的module
go mod vendor 将依赖复制到vendor下
go mod verify 校验依赖
go mod why 解释为什么需要依赖
在项目中执行go get命令可以下载依赖包,并且还可以指定下载的版本。
go mod init
就好了)今天学习到的内容还需要进一步的消化,我也是打算将并发编程这一块的内容熟悉透彻了再进行下一部分的课程学习。如果笔记中有错误的地方也希望掘友们可以及时的提出纠正。
以上就是Go语言依赖管理三要素示例解析的详细内容,更多关于Go语言依赖管理的资料请关注编程网其它相关文章!
--结束END--
本文标题: Go语言依赖管理三要素示例解析
本文链接: https://www.lsjlt.com/news/178167.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0