>백엔드 개발 >Golang >Go 모듈을 사용하여 개인 저장소 종속성을 어떻게 관리합니까?

Go 모듈을 사용하여 개인 저장소 종속성을 어떻게 관리합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-08 17:24:11219검색

How Do I Manage Private Repository Dependencies with Go Modules?

Go 모듈, 프라이빗 저장소 및 GOPATH

프라이빗 모듈 종속성 이해

Go 모듈, "점 없는" 경로 "mycompany/mylib"과 같은 것은 표준 저장소용으로 예약되어 있습니다. 이는 개인 저장소를 통해 액세스되는 모듈의 경우 도메인 이름과 프로젝트가 바인딩되어야 함을 의미합니다.

All-or-Nothing 모듈 종속성 관리

Go 모듈은 "all"을 시행합니다. -또는 아무것도" 접근 방식. 모듈을 사용할 때 모든 종속성은 모듈 시스템(go get)을 사용하여 해결되어야 합니다. 다운로드한 모듈에 대한 캐시를 제외하고 GOPATH는 중복됩니다.

개인 저장소에서 반복의 결과

과거에는 개발자가 변경 사항을 커밋하기 전에 로컬에서 라이브러리를 개발할 수 있었습니다. 모듈에는 두 가지 옵션이 있습니다.

  1. 원격 종속성 허용 및 반복: 여기에는 원격 저장소에서 변경 사항을 푸시하고 가져오는 작업이 포함되며 잠재적으로 지속적인 인터넷 연결이 필요할 수 있습니다.
  2. 단일 Git 저장소로 병합: 이 접근 방식은 모든 라이브러리를 단일 저장소로 결합하므로 원격 액세스가 필요하지 않습니다. dependency.

단순화된 코드를 사용한 사례 연구

귀하의 예제 코드는 dep에서 Go 모듈로 전환할 때 발생하는 일반적인 문제를 나타냅니다. GO111MODULE을 "on"으로 설정하면 "mycompany/mylib 경로에 대한 모듈을 찾을 수 없습니다"라는 오류가 발생합니다. 이는 mylib가 아직 모듈이 아니기 때문입니다.

해결책

mylib용 개인 저장소를 myprogram의 종속성으로 사용하려면:

  1. mylib에 대한 비공개 저장소를 생성합니다.
  2. GOPRIVATE를 사용하여 mylib가 비공개임을 지정합니다.
  3. go mod edit -replace mycompany/mylib=git.example.com/mycompany/mylib를 사용하여 mylib를 가져옵니다.
  4. 변경 사항을 개인 저장소에 푸시합니다.

추가 고려 사항

  • GOPROXY는 비공개 모듈을 사용하는 오프라인 개발에 사용할 수 있습니다.
  • 인증 목적으로 GITHUB_TOKEN 해결 방법을 적용할 수 있습니다.

위 내용은 Go 모듈을 사용하여 개인 저장소 종속성을 어떻게 관리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.