使用ROME依赖项和cobertura-maven-plugin防止'mvn site'目标中的测试错误

时间:2014-08-01 21:04:37

标签: maven cobertura maven-site-plugin jdom-2

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

mvn clean package

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

mvn clean site

一些测试会生成消息:
无法初始化类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。有没有人知道这样做的方法,并使测试在网站目标期间成功运行?

1 个答案:

答案 0 :(得分:0)

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

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

来源:JDOM2: This parser does not support specification "null" version "null"