0

在基于 Maven 的项目中,一些 JUnit 测试失败,但仅在 Maven 站点构建期间。执行时

mvn clean package

所有测试都通过。但是执行时:

mvn clean site

一些测试生成消息:
Could not initialize class org.jdom2.input.sax.XMLReaders

这些错误发生在使用 ROME 解析 RSS 数据的类中。为此,该项目依赖于 ROME (com.rometools:rome:1.5.0),它本身依赖于 JDOM 2.0.2。

当 ROME 依赖项尚未包含在项目中时,错误不会发生。

Maven 站点配置包括 cobertura-maven-plugin。这也依赖于 JDOM,通过 Jaxen: jaxen:jaxen:1.0 -> jdom:jdom:1.0

我认为在执行站点目标时,JDOM 1.0 版本被测试中的类使用,导致 ROME 库中的错误,因为它使用了不正确的 JDOM 版本。

我不知道如何将项目配置为仅在 Cobertura 插件中使用 JDOM 1.0。有谁知道这样做的方法并使测试在站点目标期间成功运行?

4

1 回答 1

0

通过在程序启动期间设置系统值解决了该问题:

System.setProperty("javax.xml.parsers.SAXParserFactory",
    "com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");

来源:JDOM2:此解析器不支持规范“null”版本“null”

于 2014-08-09T11:36:06.053 回答