【问题标题】:Scala/scoverage: Is it necessary to make a clean rebuild for releasing a jar for publishing?Scala/scoverage:是否有必要进行干净的重建以发布 jar 以进行发布?
【发布时间】:2019-08-01 00:04:18
【问题描述】:

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

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

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

【问题讨论】:

  • 您的意思是在构建之前是否需要clean,还是在运行此报告目标后需要再次使用clean
  • 在装罐前是否需要在报告目标之后进行清洁。

标签: scala maven scoverage


【解决方案1】:

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

因此,如果您已描述,则不需要运行mvn clean。产生的jar 文件无论是否清理都将是相同的。

如果您想要一个带有 SCoverage 检测类的 jar 文件,您可以使用正在运行的 mvn scoverage:package (check here) 来实现。即使你会以某种方式一个接一个地运行命令:

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

最后你会在你的目标文件夹中得到两个 jar 文件:

app.jar
scoverage-app.jar

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多