启用 Go Module 和 设置 Go 模块代理

包管理器 Go Modules,旨在取代工作区和 GOPATH。

1
2
3
4
5
go mod init xxx(项目名) // 初始化go.mod
go mod vendor // go get 新依赖包后,将依赖包复制到项目下的 vendor 目录。
go mod tidy // 整理现有的依赖,新增依赖包、删除缺失或者未使用的扩展包

go mod why // 这个命令用来解释为什么会依赖某个软件包,若要查看go.mod中某个间接依赖是被哪个依赖引入的,可以使用命令go mod why -m <pkg>来查看。eg: go mod why -m github.com/onsi/ginkgo【如何去掉间接依赖包?如果间接依赖包对应的源组件的新版本支持Go Modules,则升级源组件就能解决】
1
2
go env -w GO111MODULE=on
go env -w GOPRIVATE=gitlab.xxx.com # 配置公司私域代码仓库

project 依赖包升级的两种方案

  1. go get -u github.com/jinzhu/gorm@v1.9
  2. 修改 go.mod 文件下的相关依赖包的版本号;再执行 go mod tidy && go mod vendor 即可完成依赖包的升级

以下是搭建建新项目前的操作

1
2
3
4
5
go mod init xxx(项目名) // 初始化go.mod,启用 go module 包管理器

重新修改整个项目名:全局替换 go.mod 里的 moduleName 即可

vendor/modules.txt 文件出现代码冲突时,可以删除掉,然后执行 go mod vendor 重新构建

GoLand 一个窗口打开多项目报红的解决方案

启用Go Modules

生产环境下 GoLang 项目的部署方案『supervisor』

使用 golang 开发的应用程序可以独立地部署到服务器上,设置为后台守护进程运行即可。这种模式常用在简单的API服务项目中。

1
2
3
4
5
6
7
# 1. 编译代码,生成的可执行文件默认存放在当前目录,即 yourProject/main 文件夹下
cd ~/go/yourProject && go build main/logic.go

# 2. 使用 supervisor ,可以实现 golang 项目的平滑重启
yourProject/main/logic # 执行后项目开始运行

# 3. 使用域名映射到 golang 项目下的服务器即可

supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

引入私有仓库报错的解决方案

  1. 配置 git 全局变量

    1
    2
    
    git config --global url.ssh://git@gitlab.xxx.com/.insteadof https://gitlab.xxx.com/
    git config --global url.https://gitlab.xxx.com/.insteadof http://gitlab.xxx.com/
    
  2. 全局生效:go env -w GOPRIVATE=gitlab.xxx.com [或当前终端生效:export GOPRIVATE=gitlab.xxx.com]

  3. go get gitlab.xxx.com/xxxx@v0.0.1

  4. go mod tidy && go mod vendor

go.mod 引入本地包

1
2
require "xxx/p" v0.0.0
replace "xxx/p" => "../p2"

安装Go命令工具

comman + shift + p 跳出的命令中搜 Go:install,进行工具安装

全部勾选安装,用于编辑器的代码识别等。如果安装不成功,你可能需要梯子。