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

mvn clean package
.

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

mvn clean site
.

一些测试生成消息:
无法初始化类org.jdom2.input.sax.xmlReaders

这些错误发生在使用罗马以解析RSS数据的类中。为此,该项目对罗马(COM.Rometools:罗马:1.5.0)有依赖性,它本身就具有关于JDOM 2.0.2的依赖。

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

Maven Site配置包括Cobertura-Maven-Plugin。这也有于JDom的依赖,通过Jaxen:Jaxen:Jaxen:1.0 - > JDom:JDom:1.0

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

我不知道如何在Cobertura插件中配置项目以使用JDom 1.0。有谁知道这种方法,并使测试在网站目标期间运行成功?

有帮助吗?

解决方案

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

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

来源: jdom2:这个解析器不支持规范“null”版本“null”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top