ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Go-modules
    Language/Golang 2022. 4. 15. 14:27
    728x90
    반응형

    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

     

    How to Write Go Code (with GOPATH) - The Go Programming Language

    How to Write Go Code (with GOPATH) Introduction If you are new to Go, please see the more recent How to Write Go Code. This document demonstrates the development of a simple Go package and introduces the go tool, the standard way to fetch, build, and insta

    go.dev

     

    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
Designed by Tistory.