고(Go)에서 특정 폴더를 패키지 취급 안 받게 하는 법? 이렇게 해보세요!

고(Go)에서 특정 폴더를 패키지 취급 안 받게 하는 법? 이렇게 해보세요!

핵심 요약

  • 어떤 디렉터리(폴더)가 .go 파일을 포함하고 있을 때만 패키지(package)로 취급된답니다.

  • 빌드 제약(build constraints) (// +build 태그 또는 Go 1.17+ 에서는 //go:build 태그)을 사용하면 특정 파일들을 컴파일에서 제외할 수 있습니다.

  • 고랜드(GoLand) 같은 통합 개발 환경(IDE)에서는 디렉터리(폴더)를 제외해서 인덱싱을 막을 수도 있답니다.

고(Go)에서는 .go 파일, 즉 고(Go) 소스 파일이 하나라도 들어 있는 디렉터리(폴더)는 무조건 패키지(package)로 취급한답니다.

하지만 가끔은 특정 디렉터리(폴더)를 패키지(package)로 인식하지 않게 하고 싶을 때가 있는데요.

이럴 때는 해당 디렉터리(폴더)에 고(Go) 소스 파일이 없도록 하거나, 빌드 제약(build constraints)을 사용해서 빌드 과정에서 파일들이 포함되지 않도록 하는 방법이 있답니다.

1. 디렉터리(폴더)에서 고(Go) 소스 파일 없애기

특정 디렉터리(폴더)가 패키지(package)로 인식되지 않게 하는 가장 간단한 방법은 해당 디렉터리(폴더)에서 모든 .go 파일을 지워버리는 것입니다.

고(Go) 소스 파일이 없으면, 고(Go) 툴체인(toolchain)은 그 디렉터리(폴더)를 패키지(package)로 취급하지 않는답니다.

마치 "내용물이 없으니 빈 상자일 뿐이야!" 라고 생각하는 것과 비슷하죠.

2. 빌드 제약(Build Constraints) 사용하기

만약 디렉터리(폴더) 안에 고(Go) 소스 파일들을 그대로 유지하면서도 빌드 과정에서는 제외하고 싶다면, 빌드 제약(build constraints) (빌드 태그(build tags)라고도 합니다)을 사용할 수 있습니다.

빌드 제약(build constraints)은 고(Go) 컴파일러에게 특정 조건에 따라 파일을 포함하거나 제외하도록 지시하는 특별한 주석이랍니다.

"이 파일은 특별한 표식이 있을 때만 사용해!" 라고 알려주는 거죠.

빌드에서 파일을 제외하려면, 파일 맨 위에 빌드 중에 충족되지 않는 조건을 명시하는 빌드 제약(build constraint)을 추가합니다.

예를 들어, exclude라는 사용자 정의 빌드 태그(build tag)를 정의하고 다음과 같이 사용할 수 있습니다.

(참고: Go 1.17 버전부터는 //go:build exclude 형식을 권장하지만, 이전 버전과의 호환성을 위해 // +build exclude 형식도 여전히 작동합니다.)

// +build exclude 
// 이 주석은 이 파일이 'exclude' 태그가 활성화될 때만 빌드에 포함되도록 합니다.
// 만약 Go 1.17 이상 버전을 사용하고 있다면 '//go:build exclude'를 사용하는 것이 더 좋습니다.

package yourpackage // 실제 패키지 이름으로 바꿔주세요.

// 여기에 여러분의 코드를 작성합니다.
// 예: func MyExcludedFunction() { ... }



기본적으로 exclude 태그(tag)는 정의되어 있지 않기 때문에, 고(Go) 컴파일러는 빌드 과정에서 이 파일을 무시하게 됩니다.

이 파일을 빌드에 포함시키려면, 빌드 시에 exclude 태그(tag)를 명시적으로 지정해야 합니다.

go build -tags exclude




빌드 제약(build constraints)에 대한 더 자세한 정보는 고(Go) 공식 문서를 참고하시면 좋습니다.

https://golang.org/pkg/go/build/#hdr-Build_Constraints

3. 고랜드(GoLand)에서 디렉터리(폴더) 제외하기

만약 고랜드(GoLand)를 통합 개발 환경(IDE, Integrated Development Environment)으로 사용하고 있다면, 프로젝트에서 특정 디렉터리(폴더)를 제외하여 패키지(package)로 취급되지 않도록 할 수 있습니다.

이는 해당 디렉터리(폴더)가 인덱싱되는 것을 막거나 실수로 수정하는 것을 방지하는 데 유용할 수 있답니다.

마치 "이 폴더는 지금 신경 안 써도 돼!" 라고 IDE에게 알려주는 것과 같습니다.

고랜드(GoLand)에서 디렉터리(폴더)를 제외하는 방법은 다음과 같습니다.

  1. 프로젝트(Project) 도구 창에서 해당 디렉터리(폴더)를 마우스 오른쪽 버튼으로 클릭합니다.

  2. Mark Directory as > Excluded를 선택합니다.

이렇게 하면 해당 디렉터리(폴더)가 프로젝트 뷰와 빌드 과정에서 (IDE 레벨에서) 제외됩니다.

(단, 이 방법은 Go 컴파일러 자체의 동작을 바꾸는 것은 아니고, GoLand IDE 내에서의 처리를 변경하는 것입니다.)

이런 방법들을 활용하면 고(Go) 프로젝트에서 특정 디렉터리(폴더)가 패키지(package)로 취급되지 않도록 효과적으로 관리할 수 있답니다.

프로젝트를 깔끔하게 정리하고 원치 않는 파일이 빌드에 포함되는 것을 막는 데 도움이 될 거예요!