Предотвратить тестовые ошибки в цели «Maven Site» с зависимостью ROME и Cobertura-Maven-Plugin
-
02-01-2020 - |
Вопрос
В проекте на основе Maven некоторые из тестов JUnit не удаются, но только во время сборки сайта Maven. При выполнении
mvn clean package
.
Все тесты проходят. Но при выполнении:
mvn clean site
.
Некоторые из тестов генерируют сообщение:
не удалось инициализировать класс org.jdom2.input.sax.xmlreaders
Эти ошибки возникают в классе, который использует Rome для анализа данных RSS. Для этого проект имеет зависимость от Рима (Com.Rometools: Rome: 1.5.0), который сам имеет зависимость от JDY 2.0.2.
Ошибки не произошли, когда rome зависимость еще не включена в проект.
Конфигурация сайта Maven включает в себя плагин Cobertura-Maven. Это также имеет зависимость от JDY, через Jaxen: Jaxen: Jaxen: 1.0 -> JDOR: JDE: 1.0
Я думаю, что при выполнении цели сайта версия JDY 1.0 используется в разделе «Класс», в результате чего ошибки в библиотеке Рима, поскольку она использует неправильную версию JDY.
Я не знаю, как настроить проект для использования JDY 1.0 только в плагине Cobertura. Кто-нибудь знает способ сделать это и сделать тесты успешными во время цели сайта?
Решение
Проблема была решена путем установки системы системы во время запуска программы:
System.setProperty("javax.xml.parsers.SAXParserFactory",
"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
.
Источник: jdom2: Этот парсер не поддерживает спецификацию «NULL» версия «NULL»