2

我使用 scoverage 报告我的 scala 代码库的覆盖率信息。我对 Java 堆栈有点陌生,但我曾在覆盖构建与发布构建不同的环境中工作(通过在编译的工件中引入额外的信息)并且随后的清理和重建步骤是必要的。

现在我不确定 scoverage scala 项目的情况如何。

所以:我应该在 CI 服务器上mvn scoverage:report运行mvn clean之前的命令吗?mvn package

4

2 回答 2

3

如 scoverage-maven-plugin 文档中所述

我们不想意外部署这些检测类,因此 SCoverage 将它们分开。SCoverage 通过分叉当前的 Maven 构建并再次运行它来执行此操作,同时执行检测。

因此,检测类将使用这种分叉机制保持分离。此外,在该文档中,您具有用覆盖测试替换正常单元测试执行所需的配置,因此您不必运行两次单元测试(并且仍然获得分离的检测类的分叉覆盖执行)。

这意味着您不需要再次运行 clean,您可以在目标文件夹中检查 scoverage 类单独存储在 scoverage-classes 目录中。

于 2019-07-31T15:53:36.053 回答
3

当您使用 maven(buildpackagescoverage: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将没有任何覆盖信息。

于 2019-07-31T12:20:33.847 回答