Xerces, un analyseur XML largement utilisé dans l'écosystème Java, pose des problèmes importants défis dus à des facteurs historiques et à des problèmes d’emballage. Les binaires officiels de Xerces manquent de version et le projet n'est pas officiellement téléchargé sur Maven Central. De plus, la division de Xerces en plusieurs fichiers jar (xml-apis, xercesImpl) et les différentes pratiques de gestion des versions par différentes parties ont aggravé le problème. Cela entraîne des conflits et des problèmes de chargeur de classe lors de l'utilisation de Xerces dans des environnements Maven.
Incapacité de Maven à résoudre les conflits entre différentes versions du même artefact, même lorsque publié par différentes organisations, conduit à des situations où plusieurs dépendances Xerces sont incluses, entraînant potentiellement un chemin de classe conflits.
L'inclusion de Xerces à la fois dans l'implémentation de référence JAXP et dans les conteneurs de servlets, combinée aux versions potentiellement conflictuelles des dépendances Maven, crée un scénario de chargement de classes complexe, nécessitant une gestion minutieuse pour éviter les conflits de chargeur de classe au moment de l'exécution.
Tentatives d'exclusion ou de marquage Les dépendances Xerces telles que fournies peuvent être difficiles en raison des multiples alias et dépendances de bibliothèques et de frameworks tiers. Cependant, un développement important est apparu :
En février 2013, une version corrigée des scripts de build Xerces a été téléchargée pour résoudre le problème de téléchargement de Maven Central. Les JAR Xerces 2.11.0 sont désormais disponibles dans Maven Central, résolvant les problèmes de version et d'empaquetage de longue date.
Ce développement simplifie considérablement la gestion des dépendances Xerces dans les projets Maven. Les développeurs peuvent désormais utiliser la déclaration de dépendance suivante pour résoudre correctement Xerces :
<dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.11.0</version> </dependency>
Cette solution élimine le besoin d'un contrôle précis des dépendances et de mécanismes de chargement de classes complexes à plusieurs niveaux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!