Scala/scoverage: 是否有必要进行干净的重建以发布用于发布的 jar?

Scala/scoverage: Is it necessary to make a clean rebuild for releasing a jar for publishing?

我使用 scoverage 报告我的 scala 代码库的覆盖率信息。我是 Java 堆栈的新手,但我曾在这样的环境中工作,在这种环境中,覆盖率构建与发布构建不同(通过将附加信息引入已编译的工件),并且后续的清理和重建步骤是必要的。

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

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

当您运行使用 Maven 命令时(buildpackagescoverage: report, etc.), 所有需要的中间信息都存储在 target 文件夹中(默认情况下,您可以根据需要更改此行为),并且不应影响任何其他阶段,除非它们被设计那样。

因此,如果您已描述,则不需要 运行 mvn clean。生成的 jar 文件无论有没有清理都是一样的。

如果你想要一个 jar 文件并使用 SCoverage 检测 类,你可以使用 运行ning mvn scoverage:package (check here) .即使你会 运行 以某种方式一个接一个地命令:

mvn clean
mvn scoverage:report
mvn scoverage:package
mvn package

最终您会在目标文件夹中获得两个 jar 文件:

app.jar
scoverage-app.jar

其中 app.jar 将没有任何覆盖信息。

如 scoverage-maven-plugin 文档中所述here

We don't want to accidentally deploy these instrumented classes, so SCoverage keeps them separate. SCoverage does this by forking the current Maven build and running it again, while performing instrumentation.

因此,使用此分叉机制,已检测的 类 将保持分离。此外,在该文档中,您具有用 scoverage 测试替换正常单元测试执行所需的配置,因此您不必 运行 两次单元测试(并且仍然使用 [=18] 进行分叉的 scoverage 执行=]分开)。

这意味着你不应该要求再次运行清理,你可以在目标文件夹中检查scoverage 类单独存储在scoverage-类目录。