Programming/Go-Lang

Go-Lang : Go mod를 이용한 패키지 관리

근육곰돌이 2021. 11. 30. 19:27
728x90

Go mod를 이용한 패키지 관리

Go-lang은 의존 패키지를 import를 통해서 관리됩니다.

그럼 import에 새로 추가한 패키지는 어떻게 관리할까요?

아래의 예시를 먼저 보도록 하죠

들어가기 앞서

Go-lang프로젝트 시 새로운 github라이브러리 발견 시 아래와 같이 신규 패키지 라인을 추가하였습니다.

import (
    "os"

    "github.com/go-kit/kit/log"    <--- 신규 패키지 라인 추가
)

여기서 go run을 하게 되면

"go run"

> go run .\main.go

main.go:4:2: no required module provides package github.com/go-kit/kit/log: go.mod file not found in current directory or any parent directory; see 'go help modules'

위와 같이 go.mod 파일을 찾을 수 없다고 나옵니다.

이는 패키지 모듈을 go.mod에 관리하는 go-lang의 매커니즘으로 module관리가 되어야한다는 뜻이죠.

(물론 go.mod말고도 다른방법도 있습니다만 go mod가 독립적이고 편합니다.)

패키지 관리

Go-lang은 패키지가 프로젝트 루트 경로에 go.mod파일이 생성되어야 합니다.

방법 (명령어)
  • mod 초기화 및 go.mod (모듈 정의) 파일 생성
> go mod init {package_name}

> ls
main.go     go.mod  <-- 파일 생성됨 
  • 소스내의 의존성을 go.mod 파일에 자동 추가 (go.sum도 같이 생성됨)
> go mod tidy
 go.sum    go.mod

--------------------------------------------------

 > cat go.mod
 module mata_data_manager

 go 1.16

 require github.com/go-kit/kit v0.12.0
  • go.mod (모듈 파일) 유효성 검사
> go mod verify

all modules verified
  • 이후 빌드 시 정상적으로 됩니다.
> go build main.go
or
> go run main.go

참고로

현재 명령어의 방법은 go 1.16이상을 사용하였습니다.

아래 버전은 시도해보지 않아서 현재 가이드의 방법과 차이가 있을 수 있습니다.

혹시 해본적이 있으신 분은 댓글에 커맨트 남겨주시면 감사하겠습니다.

반응형