maven 패키지 충돌 해결 방법 상세 설명
의존 트 리 를 아래 명령 으로 표시 할 수 있 습 니 다:
mvn dependency:tree
솔직히 이것 은 Maven 의 잘못 이 아니다.왜냐하면 그것 은 가능 한 한 빨리 이 일 을 완성 하고 싶 기 때문이다.가장 중요 한 것 은 Maven 이 당신 의 응용 프로그램 이 어떤 버 전 을 원 하 는 지 모 르 기 때문에 Maven 은 당신 에 게 알려 줄 것 입 니 다.헤 이,당신 은 나 에 게 당신 이 어떤 버 전 을 원 하 는 지 알려 줄 책임 이 있 습 니 다.만약 당신 이 나 에 게 알려 주지 않 는 다 면 나 는 자신의 방식 으로 일 할 것 입 니 다.즉,더 가 까 운 것 이 좋 습 니 다.이 글 의 github 소스 코드 를 다운로드 하 십시오.
https://github.com/yujiaao/maven-dependency-conflict-demo
프로젝트-A 와 프로젝트-B,프로젝트-A 는 프로젝트-common 의 1.0 버 전에 의존 하고 그 중의 sayHello()방법 을 호출 하 는 웹 응용 프로그램 resolve-web 이 있 습 니 다.procject-B 는 procject-C 에 의존 하고 procject-C 는 procject-comon 의 2.0 버 전에 의존 하 며 그 중의 sayGoodBye()방법 을 호출 합 니 다.procject-comon 의 1.0 과 2.0 버 전 은 다 릅 니 다.1.0 에는 sayHello()방법 이 포함 되 어 있 고 2.0 에는 sayHello()와 sayGoodBye()두 가지 방법 이 포함 되 어 있 습 니 다.전체 항목 의 의존 관 계 는 다음 그림 과 같다.
Maven 의 transitive 의존 체제 에 따라 resolve-web 는 procject-comon 의 1.0 과 2.0 버 전에 동시에 의존 하여 의존 충돌 을 초래 할 것 이다.최근 승리 전략 에 따 르 면 Maven 은 procject-comon 의 1.0 버 전 을 최종 의존 으로 선택 할 것 이다.
Gradle 과 달리 Gradle 은 기본적으로 최신 버 전 을 승리 버 전 으로 선택 합 니 다.
한편,Maven 에 대해 서 는 proejct-comon 의 1.0 버 전이 2.0 버 전보 다 의존 트 리 에서 resolve-web 와 가 까 워 1.0 버 전이 이 겼 다.resolve-web 에서 mvn dependency:tree-Dverbose 를 실행 하면 resolve-web 의 의존 관 계 를 볼 수 있 습 니 다.
[INFO] resolve-web:resolve-web:war:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- project-B:project-B:jar:1.0:compile
[INFO] | \- project-C:project-C:jar:1.0:compile
[INFO] | \- (project-common:project-commmon:jar:2.0:compile - omitted for conflict with 1.0)
[INFO] +- project-A:project-A:jar:1.0:compile
[INFO] | \- project-common:project-commmon:jar:1.0:compile
[INFO] \- javax.servlet:servlet-api:jar:2.4:provided
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Windows에서 CodeArtifact(Maven)용 토큰을 자동으로 생성하는 방법CodeArtifact를 사용한 적이 있거나 사용할 계획이라면 매일 모든 Maven 프로젝트에서 수동으로 토큰(CODEARTIFACT_AUTH_TOKEN)을 생성해야 합니다. 이는 어려울 수 있으며 개발 속도를 늦출...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.