在基于 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。有谁知道这样做的方法并使测试在站点目标期间成功运行?