我使用 scoverage 报告我的 scala 代码库的覆盖率信息。我对 Java 堆栈有点陌生,但我曾在覆盖构建与发布构建不同的环境中工作(通过在编译的工件中引入额外的信息)并且随后的清理和重建步骤是必要的。
现在我不确定 scoverage scala 项目的情况如何。
所以:我应该在 CI 服务器上mvn scoverage:report
运行mvn clean
之前的命令吗?mvn package
如 scoverage-maven-plugin 文档中所述:
我们不想意外部署这些检测类,因此 SCoverage 将它们分开。SCoverage 通过分叉当前的 Maven 构建并再次运行它来执行此操作,同时执行检测。
因此,检测类将使用这种分叉机制保持分离。此外,在该文档中,您具有用覆盖测试替换正常单元测试执行所需的配置,因此您不必运行两次单元测试(并且仍然获得分离的检测类的分叉覆盖执行)。
这意味着您不需要再次运行 clean,您可以在目标文件夹中检查 scoverage 类单独存储在 scoverage-classes 目录中。
当您使用 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
whereapp.jar
将没有任何覆盖信息。