> 백엔드 개발 > Golang > Go 모듈 하위 모듈과의 모듈 충돌을 해결하는 방법은 무엇입니까?

Go 모듈 하위 모듈과의 모듈 충돌을 해결하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-30 20:47:30
원래의
954명이 탐색했습니다.

How to Resolve Module Conflicts with Go Module Sub-Modules?

하위 모듈과의 모듈 충돌 해결

Go 모듈 종속성에서 충돌이 발생하면 특히 최상위 모듈과 해당 모듈의 경우 실망스러울 수 있습니다. 하위 모듈은 다른 버전으로 별도로 가져옵니다. 이 문제는 하나 이상의 종속성이 모듈 또는 하위 모듈의 Go 이전 모듈 버전을 참조하여 모듈 및 하위 모듈 종속성을 모두 검색할 때 발생합니다.

충돌 식별

제공된 예에서 모듈 종속성 그래프는 다음과 유사합니다.

├── main module (github.com/test-org/test-repo)
│   ├── github.com/foo/bar v1.0.0
│   └── github.com/raz/mataz v1.0.0
└─────github.com/shared/dependency
      ├── submodule: github.com/shared/dependency/api
      └── two downloaded versions:
          - v1.1.0 (module-less version)
          - v1.2.0 (Go module version)
로그인 후 복사

충돌 해결

여기의 모호한 가져오기 오류 케이스는 github.com/shared/dependent/api에 대한 모듈 참조와 github.com/shared/dependent repo의 블랙박스 가져오기 사이의 충돌을 나타냅니다. 이 문제를 해결하려면 모듈과 하위 모듈의 일관된 버전을 적용해야 합니다.

해결책: 바꾸기 지시문 사용

해결책은 바꾸기 지시문을 추가하는 것입니다. 메인 모듈의 go.mod 파일에 있습니다. 이 지시문은 하위 모듈에 대한 모든 참조가 특정 버전을 사용하도록 강제합니다. 이 예에서는 Go 모듈 지원 버전인 github.com/shared/dependent v1.2.0을 사용하도록 참조를 강제합니다.

replace (
    github.com/shared/dependency => github.com/shared/dependency v1.2.0
)
로그인 후 복사

참고: 이 솔루션에서는 다음을 가정합니다. 모든 종속성은 여전히 ​​github.com/shared/dependent의 Go 모듈 지원 버전을 사용해야 합니다. 그렇지 않은 경우 참조된 종속성 버전을 수정하거나 Glide와 같은 종속성 관리 도구를 사용하는 등 다른 솔루션이 필요할 수 있습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿