프로그래밍/Go

로컬 패키지 import하기

MAKGA 2022. 8. 19. 16:02
320x100

몇시간 삽질한 끝에 해결한 로컬 패키지 import하기 정리. 

 

[이하 go 1.17버전]

다음과 같이 구성되어있다고 하자.

D:\source\go\bin

D:\source\go\pkg

D:\source\go\src

 

1. 프로젝트를 저장하기 위해 추가로 폴더를 추가한다.

D:\source\go\src\project

 

2. main 패키지 & main 함수가 있는 *.go 파일은 다음에 위치하게 된다

D:\source\go\src\project\main.go

 

3. 로컬 패키지들은 다음에 위치한다.

D:\source\go\src\package1\pack1.go

D:\source\go\src\package2\pack2.go

 

 

 

이젠 터미널에서 다음과 같이 작업한다.

$ D:\source\go\src\package1    go mod init package1 // 패키지 생성

$ D:\source\go\src\package1    go mod tidy // go.mod 내용 추가, go.sum 생성

$ D:\source\go\src\package2    go mod init package2 // 패키지 생성

$ D:\source\go\src\package2    go mod tidy // go.mod 내용 추가, go.sum 생성

 

$ D:\source\go\src\project    go mod init project

$ D:\source\go\src\project    go mod tidy

 

그리곤 D:\source\go\src\project에 생성된 go.mod에서 다음과 같이 수정한다

require (
    package1 v0.0.0
    package2 v0.0.0
)
 
replace (
    package1 v0.0.0 => ../package1
    package2 v0.0.0 => ../package2
)
 

마지막으로 빌드하면 끝이다.

$ D:\source\go\src\project    go build

 

이렇게 하면 정상적으로 빌드가 됐다.

다른 블로그에선 불필요한 정보가 많아서 예시로만 정리해둔다.

 

 

[go 1.18 버전 이후]

workspace 개념이 추가되면서 위와 같이 일일히 정해주는 방법 대신 ROOT에 go.work 파일을 정의해 일괄 정의 할 수 있게 되었다.

한 번 해봤는데 뭘 잘못했는지 내부 패키지들끼리 참조가 안되서 실제 적용은 못해봤다.

 

https://jeremyko.blogspot.com/2022/03/golang-118-workspace-mode.html

320x100

'프로그래밍 > Go' 카테고리의 다른 글

go-sql-driver bad connection  (0) 2022.10.12
Rest api 라이브러리 찾기  (0) 2022.09.20
vscode에서 내부 패키지 관련 빨간 줄 제거하기  (0) 2022.09.15
사내 스터디 1주차  (0) 2022.02.23