Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
03 Июл 2023
2 мин
99

Решение проблем с Xerces в Java/Maven

Программисты, использующие Java/Maven, часто сталкиваются с проблемами, связанными с XML-парсером Xerces. Это библиотека широко используется в экосистеме Java

Программисты, использующие Java/Maven, часто сталкиваются с проблемами, связанными с XML-парсером Xerces. Это библиотека широко используется в экосистеме Java и сопровождает многие библиотеки и фреймворки. Однако, работа с Xerces может вызывать ряд трудностей.

История Xerces

Xerces является одним из наиболее популярных XML-парсеров в экосистеме Java и используется многими библиотеками и фреймворками. Однако, его использование может вызвать ряд проблем. Основные из них связаны с тем, что разработчики Xerces не используют Maven для распространения своих релизов. В результате, официальные бинарные файлы Xerces не версионированы. Например, файл реализации Xerces 2.11.0 называется xercesImpl.jar, а не xercesImpl-2.11.0.jar.

Проблемы

Конфликт разрешения

Многие организации публикуют и используют свои собственные сборки Xerces в своих POM-файлах. Это может не вызывать проблем при работе с небольшими приложениями, но в случае крупного программного обеспечения, где используется несколько репозиториев, могут возникнуть конфликты.

Ад загрузчика классов

Как уже было упомянуто, JRE поставляется с Xerces в составе JAXP RI. Было бы логично отметить все зависимости Xerces в Maven как <exclusion> или <provided>, но код от сторонних разработчиков может или не может работать с версией, предоставленной в JAXP JDK. Кроме того, нужно учесть, что Xerces поставляется вместе с контейнерами сервлетов. Это приводит к дилемме: удалить версию сервлета и надеяться, что контейнер будет работать на версии JAXP? Или оставить версию сервлета и надеяться, что фреймворки приложений будут работать на версии сервлета?

Решения

Один из подходов к решению проблемы с Xerces — отметить все зависимости Xerces в Maven как <provided> или <exclusion>. Однако, это может быть сложно сделать, особенно при работе в большой команде, поскольку артефакты Xerces имеют множество синонимов (xml-apis, xerces, xercesImpl, xmlParserAPIs и т.д.).

Возможное решение — глобально исключить все зависимости Xerces и заставить все фреймворки/библиотеки использовать версию JAXP. Данное решение может помочь избежать проблем с версионированием и конфликтами при работе с Xerces.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий