>백엔드 개발 >Golang >최상위 및 하위 모듈 가져오기로 Go 모듈 종속성 충돌을 해결하는 방법은 무엇입니까?

최상위 및 하위 모듈 가져오기로 Go 모듈 종속성 충돌을 해결하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-03 22:04:30300검색

How to Resolve Go Module Dependency Conflicts with Top-Level and Sub-module Imports?

최상위 및 하위 모듈 가져오기와의 Go 모듈 종속성 충돌 해결

이 문제는 최상위 모듈과 다음 중 하나가 해당 하위 모듈은 서로 다른 버전으로 별도로 가져오기 때문에 종속성 충돌이 발생합니다. 프로젝트에 github.com/foo/bar 및 github.com/raz/mataz라는 두 가지 종속성이 있는 시나리오를 생각해 보세요. go mod 다운로드를 실행하면 하위 모듈이 있기 때문에 github.com/shared/dependent의 두 가지 다른 버전이 다운로드됩니다.

다운로드한 모듈을 검사하면 여러 다운로드 버전이 드러납니다.

  • ${GOPATH}/pkg/mod/github.com/shared/[email protected]: 하위 모듈을 포함한 전체 저장소 내용을 포함합니다.
  • ${GOPATH}/pkg/mod /github.com/shared/dependent/[email protected]: api 하위 모듈만 포함합니다.

이 불일치로 인해 github.com/을 가져오려고 할 때 모호한 가져오기 오류가 발생합니다. 공유/종속성/API. Go 도구는 두 디렉터리에 충돌하는 버전이 있기 때문에 사용할 버전을 결정할 수 없습니다.

해결책: 종속성 버전 업그레이드

이 문제의 근본 원인은 대개 다음과 같습니다. 충돌하는 종속성 내에서 사전 모듈 버전 관리와 관련됩니다. go.mod 파일에 다음 줄을 추가하면 충돌하는 종속성이 go-module 지원 버전을 사용하도록 강제됩니다.

replace (
    github.com/shared/dependency => github.com/shared/dependency v1.2.0
)

이렇게 하면 github.com/shared/dependent에 대한 참조가 go와 호환되는 버전을 사용하도록 강제됩니다. 모듈, 충돌하는 종속성 문제를 해결합니다. 공유 종속성에 대한 모든 참조가 go-module 지원 버전으로 전달되기 때문에 이 솔루션이 작동한다는 점에 유의하는 것이 중요합니다.

위 내용은 최상위 및 하위 모듈 가져오기로 Go 모듈 종속성 충돌을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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