【问题标题】:Spring Boot - Host JaCoCo coverage as static HTMLSpring Boot - 将 JaCoCo 覆盖托管为静态 HTML
【发布时间】:2021-02-01 10:03:31
【问题描述】:

我正在使用 Spring Boot 2.2.5 和 Java 8。

我有一个 Spring Boot Web 服务,我使用 Spring Boot 中的嵌入式 Tomcat 作为 linux 服务部署和运行。

在我的 Maven 构建期间,我使用 JaCoCo Maven 插件生成代码覆盖率指标,并且我想在部署到我的服务器时打包和托管这些静态 HTML 页面。

这些文件的输出是target/site/jacoco/index.html

我知道您可以通过 Spring Boot 部署和托管网页,但我从未完成过,而且我在网上查找的所有内容似乎都比我实际尝试做的要复杂。到目前为止,我似乎唯一收集到的是,它需要将 html 放入我的 /resources 目录。

有谁知道如何将 JaCoCo 生成的所有 html 页面打包到我的 .jar 文件中,并将其托管在我的网络服务器上,以便我可以像访问应用程序中的任何其他 API 的方式一样访问它?

我使用 Jenkins 构建和部署应用程序。因此,如果有一些漂亮的 Jenkins 方式可以通过我的 Jenkins.groovy 脚本来实现,那也很好。

我希望能够访问类似:localhost:8080/my-app-context/coverage

【问题讨论】:

    标签: java html spring spring-boot


    【解决方案1】:

    好吧,经过更多的挖掘和正确的谷歌问题,解决方案比我想象的要简单。我偶然发现了来自 Baeldung 的 this 文章。

    目标:

    • target/site/jacoco 放入src/main/resources/static 目录
    • target/apidocs 放入src/main/resources/static 目录

    挑战:

    • 仅在 Maven/Jenkins 构建期间执行。

    解决办法:

    • 构建成功后使用 Maven 插件移动文件
    <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.2</version>
        <executions>
            <execution>
                <id>copy-javadocs</id>
                <phase>install</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <outputDirectory>${basedir}/src/main/resources/static/apidocs</outputDirectory>   <!-- output directory -->
                    <resources>
                        <resource>
                            <directory>${basedir}/target/apidocs</directory>         <!-- source directory -->
                            <filtering>true</filtering>
                        </resource>
                    </resources>
                </configuration>
            </execution>
            <execution>
                <id>copy-jacoco</id>
                <phase>install</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <outputDirectory>${basedir}/src/main/resources/static/jacoco</outputDirectory>   <!-- output directory -->
                    <resources>
                        <resource>
                            <directory>${basedir}/target/site/jacoco</directory>         <!-- source directory -->
                            <filtering>true</filtering>
                        </resource>
                    </resources>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    将上述代码放入我的 pom.xml 后,一旦应用程序部署到我的服务器,我的 JaCoCo 覆盖范围和我的 JavaDoc 静态 html 页面都可以在以下位置访问:

    • &lt;context-root&gt;/apidocs/index.html
    • &lt;context-root&gt;/jacoco/index.html

    我希望这可以为其他希望做同样事情的人简化它。

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 2016-09-26
      • 2015-07-19
      • 1970-01-01
      • 2015-04-07
      相关资源
      最近更新 更多