>  기사  >  Java  >  Java/Maven에서 \'Xerces Hell\'을 피하는 방법은 무엇입니까?

Java/Maven에서 \'Xerces Hell\'을 피하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-20 04:23:01270검색

How to Avoid

Java/Maven에서 "Xerces Hell"을 다루나요?

배경

Java 생태계에서 널리 사용되는 XML 파서인 Xerces는 중요한 역할을 합니다. 역사적 요인과 포장 문제로 인한 어려움. 공식 Xerces 바이너리에는 버전 관리가 부족하며 프로젝트는 공식적으로 Maven Central에 업로드되지 않습니다. 또한 Xerces를 여러 jar(xml-apis, xercesImpl)로 분할하고 여러 당사자의 다양한 버전 관리 방식으로 인해 문제가 더욱 복잡해졌습니다. 이로 인해 Maven 환경에서 Xerces를 사용할 때 충돌 및 클래스 로더 문제가 발생합니다.

문제

충돌 해결

Maven은 동일한 아티팩트의 서로 다른 버전 간의 충돌을 해결할 수 없습니다. 여러 조직에서 게시하면 여러 Xerces 종속성이 포함되어 잠재적으로 클래스 경로가 발생하는 상황이 발생합니다. 충돌.

클래스 로더 지옥

JAXP 참조 구현과 서블릿 컨테이너 모두에 Xerces가 포함되고 Maven 종속성에서 잠재적으로 충돌하는 버전이 결합되어 복잡한 클래스 로딩 시나리오가 생성되므로 주의 깊은 관리가 필요합니다. 런타임 시 클래스 로더 충돌을 방지합니다.

솔루션

Xerces 종속성을 제공된 대로 제외하거나 표시하는 것은 타사 라이브러리 및 프레임워크의 여러 별칭 및 종속성으로 인해 어려울 수 있습니다. 그러나 중요한 발전이 나타났습니다.

최근 업데이트

2013년 2월, Maven Central 업로드 문제를 해결하기 위해 Xerces 빌드 스크립트의 패치 버전이 업로드되었습니다. 이제 Xerces 2.11.0 JAR을 Maven Central에서 사용할 수 있어 오랜 버전 관리 및 패키징 문제가 해결되었습니다.

이번 개발로 Maven 프로젝트의 Xerces 종속성 관리가 크게 단순화되었습니다. 이제 개발자는 다음 종속성 선언을 사용하여 Xerces를 올바르게 해결할 수 있습니다.

<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.11.0</version>
</dependency>

이 솔루션을 사용하면 세분화된 종속성 제어 및 복잡한 계층형 클래스 로딩 메커니즘이 필요하지 않습니다.

위 내용은 Java/Maven에서 \'Xerces Hell\'을 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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