-
Go-modulesLanguage/Golang 2022. 4. 15. 14:27728x90반응형
go module 이란
go module 은 Golang의 패키지 관리자입니다.
go module 은 표준 패키지 관리자이며, golang 1.11 버전 이후부터 표준으로써 자리잡았습니다.
그 이전 버전까지는 dep, glide 와 같은 패키지 관리자가 사용되었습니다.
Golang 은 다른 javascript의 package.json, python의 requirements.txt, gradle 환경에서의 build.gradle 과 같은
의존성의 관리하는 파일로써 go.mod 를 활용합니다.
go.mod 파일은 go 프로젝트에서 사용하는 의존 패키지들이 기록되는 파일이며,
의존성의 이름과 버전이 상세히 기록됩니다.
go build 커맨드를 통해서 의존 패키지들을 설치할 수 있습니다.
go workspace
go workspace 는 golang 프로젝트의 작업공간입니다.
이 작업공간이라는 의미가 워낙 모호하다보니 구체적으로 적어볼까 합니다.
일단 의미적으로 golang 프로젝트는 아래와 같은 구조로 구성됩니다.
( go-workspace 라는 Directory가 있다고 가정하겠습니다. )
/go-workspace /pkg /bin /src /go-login-server
여기서 go-workspace 가 하나의 Go workspace가 되고, 그 아래 pkg, bin, src 디렉토리가 구성됩니다.
src 디렉토리에 go project 들이 추가될 수 있습니다.
이때 의미적으로 유사한(즉, 공통의 도메인의) 프로젝트들을 src 에 추가하여 하나의 go workspace로 관리할 수 있습니다.
/go-workspace /pkg /bin /src /go-login-server /go-member-server / ...등등
두번째로 의존성의 관리 측면에서 공통의 의존성을 사용하는 프로젝트들이 하나의 go workspace에서 관리되어야합니다.
극단적인 예로
A 라는 프로젝트는 C 라는 외부 패키지의 1.13.4 버전을 요구하고
B 라는 프로젝트는 C 라는 외부 패키지의 1.13.11 버전을 요구할 수 있습니다.
이때는 A 프로젝트와 B 프로젝트는 같은 go workspace에 공존하는 것을 매우 까다로운 일이 될 수 있습니다.
그래서 각 GO workspace 마다 각각의 의존성 관리를 책임지도록 합니다.
https://go.dev/doc/gopath_code#Workspaces
Go Path
gopath 는 go workspace의 위치에 해당합니다.
일반적으로 전역의 go workspace가 기본 go path가 됩니다.
go path는 작업중인 프로젝트의 go workspace의 path로 변경될 필요가 있습니다.
반응형'Language > Golang' 카테고리의 다른 글
golang package 이해하기 (2) 2023.09.18 golang struct 이해하기 (0) 2023.09.18 golang cobra (0) 2023.01.27 [Sarama] Sarama 로 Kafka Producer 만들어보기 ( Golang ) (0) 2021.12.04