Empêcher les erreurs de test dans le but «Maven Site» avec la dépendance de Rome et le plug-in Cobertura-Maven
-
02-01-2020 - |
Question
Dans un projet basé sur Maven Certains des tests Junit échouent, mais uniquement pendant un site maven. Lors de l'exécution
mvn clean package
Tous les tests passent. Mais lors de l'exécution:
mvn clean site
Certains des tests génèrent le message:
ne pouvait pas initialiser la classe org.jdom2.input.sax.xmlreaders
Ces erreurs se produisent dans une classe qui utilise Rome pour analyser les données RSS. Pour cela, le projet a une dépendance à Rome (COM.ROMETOOLS: Rome: 1.5.0), qui a lui-même une dépendance sur JDOM 2.0.2.
Les erreurs ne se sont pas produites lorsque la dépendance de Rome n'était pas encore incluse dans le projet.
La configuration du site Maven comprend le plug-in Cobertura-Maven. Cela a également une dépendance sur JDOM, via JAXEN: JAXEN: JAXEN: 1.0 -> JDOM: JDOM: 1.0
Je pense que lors de l'exécution de l'objectif du site, la version JDOM 1.0 est utilisée par la classe sous test, ce qui entraîne les erreurs dans la bibliothèque de Rome, car elle utilise la version de JDOM incorrecte.
Je ne sais pas comment configurer le projet pour utiliser JDOM 1.0 uniquement dans le plug-in Cobertura. Est-ce que quelqu'un sait un moyen de faire cela et de faire fonctionner les tests au cours de l'objectif du site?
La solution
Le problème a été résolu en définissant une valeur système pendant le démarrage du programme:
System.setProperty("javax.xml.parsers.SAXParserFactory",
"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
Source: JDOM2: Cet analyseur ne prend pas en charge la spécification "NULL" version "NULL"