Tutorial: Getting started with multi-module workspaces
workspace
在Go 1.18
版本后引入;workspace
即工作空间,用于统一管理多个软件模块,如可以快速测试、构建和运行多个模块中的代码;workspace
使用go work
工具进行管理,配置在go.work
文件中,用法和go mod
相似;workspace
可以不使用replace
指令就实现替换模块的功能(见示例)。
在当前目录下创建一个 go.work
文件,即将当前目录标识为一个工作空间:
- 当忽略
moddirs
时,仅创建一个不包含任何use
指令的go.work
文件; - 当添加
moddirs
时,需要每个moddir
下都存在go.mod
文件,然后会在go.work
文件中使用use
指令添加这些moddir
;
# Usage 1: go mod init without any moddir
go mod init
# Usage 1: go mod init with one moddir
go mod init ./module1
# Usage 2: go mod init with multiple moddirs
go mod init ./module1 ./module2
当进行上述配置后,可以在工作空间中运行任意模块(即使我们没有在模块内):
go run ./module1
将指定模块添加到当前工作空间中。
# 将指定模块加入到当前工作空间
go work use ./module2
# 将指定目录下的所有模块都加入到当前工作空间
go work use -r ./modules