Golang Go语言中采用gomod方式后gopath下的bin如何处理?

发布于 1周前 作者 sinazl 来自 Go语言

Golang Go语言中采用gomod方式后gopath下的bin如何处理?

go 新手沙雕问题。

既然要贯彻 gomod,那 gopath 也要废除掉吗?

如果废除掉,本来有些命令是 go get && go install 放到 bin 目录下,然后在构建过程中引用这些 /bin 目录。现在采用 gomod 怎么处理呢?

换言之,原来 gopath 时有些构建时依赖是放在 bin 目录下管理的,现在 go mod 怎么处理?我看 github 有个可能相关的 issue https://github.com/golang/go/issues/27653


更多关于Golang Go语言中采用gomod方式后gopath下的bin如何处理?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

设 GOBIN 环境变量

更多关于Golang Go语言中采用gomod方式后gopath下的bin如何处理?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


现阶段 GOPATH 还是存在的,还是放在$GOPATH/bin 下。使用 go mod 安装的应用的可执行文件也是放在这个目录下。

你也可以通过 GOBIN 定义具体的位置

现在是放在 GOPATH 下的 pkg/mod 目录下。你配置一下 GOBIN 就行了。

go mod init 后,在你引用新的依赖库时,可以直接 go mod tidy 命令自动下载会添加依赖到 go mod.

在Golang中,自从Go 1.11版本引入Go Modules(即go mod)后,项目的依赖管理和构建方式发生了显著变化。采用go mod方式管理项目时,虽然GOPATH仍然有效并用于存放一些全局工具和缓存,但项目的源代码和依赖通常会被放置在项目自身的模块路径下(由GOMOD文件指定)。

关于GOPATH/bin目录,这里主要存放通过go install命令全局安装的可执行文件。在使用go mod的项目中,你通常会直接在项目内运行或构建二进制文件,而不需要频繁地将它们安装到GOPATH/bin。例如,你可以在项目根目录下使用go run .来运行程序,或者使用go build -o ./output/mybinary来构建二进制文件到指定目录。

如果你确实需要将某个工具或应用全局安装到GOPATH/bin,可以通过在项目外运行go install命令指定包路径来完成。但请注意,这种做法在模块化项目中并不常见,因为它可能引入版本冲突或依赖管理上的混乱。

总的来说,go mod方式鼓励在项目内部进行构建和运行,减少对全局GOPATH/bin的依赖,从而增强项目的可移植性和版本控制的准确性。

回到顶部