https://johngrib.github.io/wiki/golang-mod/
서문
Go 1.11 and 1.12 include preliminary support for modules, Go's new dependency management system that makes dependency version information explicit and easier to manage. This blog post is an introduction to the basic operations needed to get started using modules. A followup post will cover releasing modules for others to use.
A module is a collection of Go packages stored in a file tree with a go.mod file at its root. The go.mod file defines the module’s module path, which is also the import path used for the root directory, and its dependency requirements, which are the other modules needed for a successful build. Each dependency requirement is written as a module path and a specific semantic version.
As of Go 1.11, the go command enables the use of modules when the current directory or any parent directory has a go.mod, provided the directory is outside $GOPATH/src. (Inside $GOPATH/src, for compatibility, the go command still runs in the old GOPATH mode, even if a go.mod is found. See the go command documentation for details.) Starting in Go 1.13, module mode will be the default for all development.
This post walks through a sequence of common operations that arise when developing Go code with modules:
Go 1.11과 1.12에는 새로운 디펜던시 관리 시스템인 모듈(modules)의 예비 지원이 추가됩니다. 모듈은 Go의 새로운 디펜던시 관리 시스템이고, 디펜던시 버전 명시와 관리를 쉽게 할 수 있도록 도와줍니다. 이 블로그 포스트는 모듈 기능을 처음으로 사용하는 데에 필요한 기본적인 작업들을 소개합니다. 그리고 이어지는 포스트는 모듈을 배포하는 방법을 다루게 될 것입니다.
모듈은 go.mod
파일이 루트 디렉터리에 있는 파일 트리에 저장된 Go 패키지의 모음입니다. go.mod
파일은 모듈의 모듈 경로(module path)를 정의하며, 여기에서 모듈 경로는 모듈의 루트 디렉터리이기도 한 import path 입니다. 한편, go.mod
파일은 빌드에 필요한 각각의 디펜던시도 정의하며 각각의 디펜던시는 모듈 경로와 semantic version으로 명시됩니다.
Go 1.11 에서 작업 경로가 $GOPATH/src
의 바깥이며, 작업 경로나 그 부모 경로에 go.mod
파일이 있다면 go 커맨드는 모듈 기능을 활성화합니다. (호환성을 위해 go.mod
파일이 있더라도 작업 경로가 $GOPATH/src
하위의 경로라면 기존의 GOPATH 모드로 작동합니다.) Go 1.13부터는 모듈 모드가 디폴트 설정이 될 예정입니다.