我使用scoverage来报告scala代码库的覆盖率信息。我对Java堆栈有点陌生,但我在一些环境中工作过,在这些环境中,覆盖构建与发行版构建不同(通过在编译的工件中引入更多信息),随后的清理和重建步骤是必要的。
现在,我还不确定scoverage项目的情况如何。
所以:在mvn scoverage:report之后,我应该在CI服务器上的mvn clean命令之前运行mvn clean吗?
发布于 2019-07-31 12:20:33
当您使用maven运行命令(build、package、scoverage:report等)时,所有所需的中间信息都存储在target文件夹中(默认情况下,您可以根据需要更改此行为),并且不应该影响任何其他阶段,除非它们是这样设计的。
因此,在您描述过的情况下,不需要运行mvn clean。结果jar文件无论是否干净,都将是相同的。
如果您想要一个带有jar工具化类的SCoverage文件,可以使用正在运行的mvn scoverage:package (检查这里)来完成它。即使您将以一种方式一个接一个地运行命令:
mvn clean
mvn scoverage:report
mvn scoverage:package
mvn package最后,您将在目标文件夹中获得两个jar文件:
app.jar
scoverage-app.jar其中app.jar将没有任何覆盖信息。
发布于 2019-07-31 15:53:36
如scoverage maven-plugin 这里中所述
我们不想意外地部署这些仪器化的类,所以SCoverage将它们分开。SCoverage通过分叉当前Maven构建并再次运行它来实现这一点,同时执行检测。
因此,使用此分叉机制将保持工具化类的分离。此外,在该文档中,您拥有用scoverage测试替换常规单元测试执行所需的配置,因此您将不必运行两次单元测试(并且仍然需要使用工具化的类进行分叉的覆盖执行)。
这意味着您不需要再次运行干净,您可以在目标文件夹中签入,即scoverage类单独存储在scoverage classes目录中。
https://stackoverflow.com/questions/57231463
复制相似问题