如何解决离线环境下golang开发时依赖的问题?-灵析社区

我头像最美

`Go`在联网环境下开发可以使用`go mod tidy`联网拉取项目所需依赖包, 而离线环境下,本人了解到,只能单个项目中使用`vendor`解决包依赖,但是一旦该项目导入包有变化就会失效。 而且`vendor`仅对当前项目有效,其他项目不能引用`vendor`中的包。 这导致离线环境的`Go`开发寸步难行。往往用`Go`卡在这里后,我就只能转用`Python`在离线内网开发。 想请教大佬们 1. 如何在内网(不能连互联网)搭建`goproxy`服务,让新旧项目都能重复共享使用特定的包. 2. 其所需的包如何下载和转移至内网. 3. 如何解决`sum`的问题等等? 越详细越好。 网上关于`Google`官方的`goproxy`和`goproxy.io`搭建`goproxy`服务的文章,都是基于能联网的公司内网场景。

阅读量:15

点赞量:0

问AI
"Online" 端: 1. 新建项目目录及 "go" 文件,将需要移植到内网的依赖包的包名("import (_ "github.com/tidwall/gjson").....")写入 "go" 文件中。 2. 然后利用 "go mod vendor" 命令,将依赖包打包到当前项目所在目录。 3. 将当前项目目录下的 "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" 文件。