我最近试图为我们的项目包含cobertura插件。但我遇到了一个奇怪的问题。现在,如果我尝试这样做:
mvn clean package cobertura:check-integration-test
我的项目组装得很好。但是部署后,这是我得到的消息:
java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/LightClassmapListener
据我了解,发生这种情况是因为cobertura改变了我的类的字节码。那么,我应该如何进行检查和构建代码呢?现在,我为团队城市提出了以下解决方案:
第一步运行 cobertura:
mvn clean package cobertura:check-integration-test
在第二步之后,运行正常程序集:
mvn clean package
有效,但似乎有点奇怪,我必须运行两次打包过程(这需要双倍时间),只是为了使用不受 cobertura 插件影响的字节码进行干净的构建。
如果使用 qualinsight-mojo-cobertura
,您的类将在检测时备份,然后在报告时恢复(这反过来会导致生成的包中包含未检测的类)。
在入侵和报告之间,您可以根据需要运行测试(无论是UT,IT)(与maven-cobertura-plugin
不同,qualinsight-mojo-cobertura
不运行测试)。有关更多信息,请查看项目页面(尤其是插件默认绑定到的 Maven 阶段。