以 xxx-go-eninge(图片中有打码) 为例,我的项目中蕴含5个子我的项目,2个公共类,如下图,
红色框选即便公共模块
其它都是独立的子项目,有main.go
咱们将这个我的项目放在任意文件夹,是否在GOPATH都能够
如果这个我的项目不做任何配置,那么在任意目录下执行go get或build都会失败。
当初操作步骤如下
- 将我的项目根目录退出到GOPATH中,如图红圈中,Project级别的GOPATH即可,同时选中上面的索引GOPATH
这么做的目标是为了将以后大我的项目的目录变成一个独立的gopath的环境,外面有src、pkg、bin,免得净化Global GOPATH
PS: 这个我的项目放在那里都能够,没有必须放在Global GOPATH的要求 - 启动控制台
- 先执行go env查看GOPATH门路是否正确,正确的话会蕴含我的项目根目录和零碎环境中的GOPATH
没有蕴含也没关系,点击上图中Local 左边的 + 号,此时新建的控制台中应该就是正确的环境变量了 -
cd 到每个子模块的目录顺次执行,公共模块优先,
比方cd到xxxEngine那层目录go mod init go get -insecure # 应用 -inisecure 的起因是咱们的公有库无奈verify # 报错能够先不理
- 如果 tools 目录下没有go文件,所以无奈mod,而它的子目录中有,须要别离在cd到每个子目录下新建mod,比方 tools/util目录,module名为tools/util
- 此时每个子模块下会生成go.mod文件,文件中会require以后模块的所有依赖模块
-
比方运行xxxEngine时,因为依赖项的问题,执行会报错,比方报错的内容大抵为:
xxxConfig找不到的谬误
,因为xxxConfig是并非线上模块,此时须要关上xxxEngine/go.mod文件
最重要的步骤增加如上信息
require xxxConfig v0.0.0 replace xxxConfig => ../xxxConfig # 通过相对路径的形式,将专用模块引入,此时便不会再报错
- 如果遇到谬误,屡次执行
go get -insecure
而后执行7的步骤,增加相应依赖,直到没有谬误为止, - 如上操作,所有子目录都做成了独自的模块,每个含有
go.mod
的模块能够失常的go build
编译(公共模块无需编译),能够应用GoLand配置每个我的项目的独自的运行/调试
图中Run Kind
抉择为目录 Directory
,而后如图设置对应的执行目录、输入目录即可 - 如图能够看到pkg目录存储了以后我的项目的缓存文件,并不会净化其它环境
而每个子目录下的go.mod将以后文件夹变成了一个模块
发表回复