Go
在联网环境下开发可以使用go mod tidy
联网拉取项目所需依赖包,
而离线环境下,本人了解到,只能单个项目中使用vendor
解决包依赖,但是一旦该项目导入包有变化就会失效。
而且vendor
仅对当前项目有效,其他项目不能引用vendor
中的包。
这导致离线环境的Go
开发寸步难行。往往用Go
卡在这里后,我就只能转用Python
在离线内网开发。
想请教大佬们
- 如何在内网(不能连互联网)搭建
goproxy
服务,让新旧项目都能重复共享使用特定的包. - 其所需的包如何下载和转移至内网.
- 如何解决
sum
的问题等等?
越详细越好。
网上关于Google
官方的goproxy
和goproxy.io
搭建goproxy
服务的文章,都是基于能联网的公司内网场景。
Online
端:go
文件,将需要移植到内网的依赖包的包名(import (_ "github.com/tidwall/gjson").....
)写入go
文件中。go mod vendor
命令,将依赖包打包到当前项目所在目录。vendor
目录、go.mod
及go.sum
三个东西拷贝到离线电脑中。Offline
端新建项目目录
offline_project
(该名字为举例,实际随意),将前面第三步拷贝的三个东西拷贝进来,新建go
文件,需要用到什么包就导入什么包 (如果导入的是第三方包前提是该包已经打包进了 vendor 目录中)注意事项
在
Offline
端,import
的包如果只是vendor
中的个别包,则go.mod
和go.sum
可能会出现红点,此时千万不要使用go mod
命令去整理,不要担心编译时会将 vendor 中的依赖包全部编译进去。如何复用
要复用移植的第三方包,先将项目目录
offline_project
中除vendor
、go.mod
、go.sum
之外原有的项目文件(主要是go
文件)移出当前目录或者更改后缀,然后再新建go
文件。