GoLand编译器配置mod代理和gopath两种获取依赖包配置方式的比较

背景:项目环境配置(打开项目发现项目下的包自身找不到问题)

关于go的项目配置一共是两种情况第一种就是传统的方式:Gopath的方式(两种方式都可以,都有各自的优势)

注意:

开发中有个小的设置,那就是如果采用的是Gopath的方式传统方式,则必须将GO111MODULE设置为off:

E:\Develop\gowork\src\test>set GO111MODULE=off

相反,如果采用的是代理mod方式那么就采用GO111MODULE设置为on,否则无法创建mod文件,具体如下:

E:\Develop\gowork\src\test>go mod init
go mod init: modules disabled by GO111MODULE=off; see 'go help modules'

E:\Develop\gowork\src\test>set GO111MODULE=on

E:\Develop\gowork\src\test>go mod init
go: creating new go.mod: module test

一.  采用GOPATH方式:(优势包自动识别本地gopath的src下的包,可以使用本地包进行相关开发,同时go get 下载的包也会自动存放在src下;缺点就是下载速度慢,还可能下载不下来,同时不利于包版本的管理)

首先要关闭Modules的mod启动配置:(不要勾选)

然后就是在GOPATH配置中添加自己配置的GOPATH路径:(里面可以添加多个路径,系统会默认进行全部查找相关的依赖包)

最后就是关于依赖包没有的问题:

采用go  get  -d   -v  ./    

具体的介绍如下:

https://wiki.jikexueyuan.com/project/go-command-tutorial/0.3.html

当以上全部执行完成,就可以直接使用go build。

二. 采用mod方式进行下载:(原理就是采用代理进行mod下载,同时会生成相关依赖的包管理文件,比较方面。优势:下载速度快,利于包的管理,会自动下载到GOPATH路径下的pkg下面;缺点:就是包采用的是代理方式,本地开发的私人包将无法使用,必须在代理网站可以搜索到的包才行。(针对这个缺陷已经找到解决方案,具体见第三种方案))

1. 下载go依赖包可能被网络封锁,下载不了,所以需要配置国内代理:

2. 项目中我发现之前使用的Beego框架可以正常的使用go工作目录,但是当我使用gin框架开发的时候发现问题,那就是已经有的包,显示找不到,会报错。

3. 尤其就是自己的项目包找不到的问题。

配置

ctrl+alt+s->Go->Go Modules(vgo)->设置proxyhttps://goproxy.io/->点击Apply->重启GoLand即可

具体的Proxy,可以根据具体的需求进行相关的配置,可能有其他的代理服务。

2.  配置项目的环境:

如何出现背景中遇到的问题,那么就采用这种方式3个地方都进行相关的配置,然后Apply应用就可以了。

2. 如果发现上边的方式还是不行,那么就直接采用go mod 方式进行:

首先go mod init. (进行项目model的初始化)

然后go build (编译项目)

最后 bee run就可以运行。

三. 针对第二种mod方式进行改进(之前说的mod方式进行代理,但是本地包无法使用的情况进行解决)

步骤:

首先进行去人要代理的包假设为:logCollect

然后找到该包的具体绝对路径位置:E:\Go\Gopath\src\demoCode\logCollect

找到我们自己项目的mod.go文件添加如下代码:

require (
	logCollect v0.0.0
)
replace logCollect => E:\Go\Gopath\src\demoCode\logCollect

最后使用和第二种方法一样的方式:

go mod init进行初始化依赖包。

最后就是检验: 发现项目的Modules中已经添加了本地包,表示已经成功。

特别注意:   最后之中方式是一种综合使用方式,将会在未来开发中大规模使用,也方便团队内部合作开发使用自己公司内部的公共包。但是一定要切记,本地公共包需要先进行go mod init在公共保重产生go.mod

这样就可以直接指向本地依赖包。

以log4go公共包为例子,先进入包内,然后执行go mod init ....

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页