(Maven) 라이브러리 종속성 충돌 해결

Maven은 라이브러리 관리에 유용한 도구입니다.

그러나 때때로 각 라이브러리에서 참조하는 하위 라이브러리의 충돌 버전이 있습니다.

Maven에서는 각 라이브러리가 다른 버전을 참조할 때 Maven 트리 구조에서 루트에 가장 가까운 라이브러리를 선택합니다.

올려.

Maven 트리 검사

mvn dependency:tree

예를 들어, 티카 라이브러리와 함께 openhtmltopdf 라이브러리는 모두 pdfbox 라이브러리를 참조하지만 각 라이브러리는 다른 버전의 pdfbox를 참조합니다.

tika-parsers-standard-package -> pdfbox:2.0.27
openhtmltopdf-pdfbox -> pdfbox:2.0.22

Maven Tree에서 tika 라이브러리가 맨 위에 있으므로 pdfbox:2.0.27 버전을 선택하고 openhtmltopdf의 pdfbox를 생략합니다.

이러한 버전 충돌이 발생했을 때 Maven 버전 전략에 의존하지 않고 직접 선택하고 싶다면, exclusion 라벨을 사용하십시오.

<排除>

Dependency 태그 안에 exclusion 지정된 라이브러리 외에 태그를 넣어 참조할 수 있습니다.

<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-parsers-standard-package</artifactId>
    <version>2.6.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>com.openhtmltopdf</groupId>
    <artifactId>openhtmltopdf-pdfbox</artifactId>
    <version>1.0.6</version>
</dependency>

위와 같이 tika 라이브러리의 종속성에서 pdfbox를 제외 태그로 지정하면 빌드 시 tika 라이브러리의 pdfbox:2.0.27이 제외되고 openhtmltopdf 라이브러리에서 참조하는 pdfbox:2.0.22가 사용됩니다.

.