当前位置: 首页 > 知识库问答 >
问题:

使用maven作为构建工具时,通过/exactor/info endpoint提供Spring Boot git和构建信息

陶征
2023-03-14

我正在使用此Spring Boot指南使用Spring Boot Actuator构建RESTful Web服务。当访问终结点/执行器/info时,我得到的是空的json响应{}

actuator api文档提到了包含构建信息(如工件、组、名称、版本)和git信息(如分支、提交等)的响应结构。

如何启用文档化的响应结构。我想使用maven作为构建工具(而不是gradle)。这是我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>actuator-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>actuator-service</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

共有3个答案

容修贤
2023-03-14

我也有同样的问题,/exactor/info总是返回{}

首先,添加插件(lombok不是必需的):

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <excludes>
            <exclude>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </exclude>
        </excludes>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>build-info</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>pl.project13.maven</groupId>
    <artifactId>git-commit-id-plugin</artifactId>
</plugin>

第二,去Maven-

最后,运行你的应用程序,就这样!

贲招
2023-03-14

下面是Gradle的工作解决方案。Gralde版本7.3.2 SpringBoot版本:2.6.1

包括项目的执行机构。应将以下依赖项添加到构建中。格雷德尔档案。

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
}

默认情况下,只有健康在网络上可用。因此,要启用信息执行器,请在application.yml中添加以下条目

management:
  endpoints:
    web:
      exposure:
        include: "health,info"

现在,当我们运行应用程序并尝试访问/exactor/infoendpoint时,它会打印空json作为响应。这是信息执行器endpoint的默认行为。

从build生成buildInfo。gradle,在你的gradle文件中添加以下内容

springBoot {
    buildInfo()
}

现在,如果运行应用程序并点击/exactor/infoendpoint,输出将是项目的构建信息

{"build":{"artifact":"actuator-service","name":"","time":"2022-01-12T18:16:28.468Z","version":"0.0.1-SNAPSHOT","group":"com.example"}}

另外,我们可以配置生成git提交信息。要做到这一点,你必须应用下面的插件

id "com.gorylenko.gradle-git-properties" version "1.5.1"

一旦完成,在项目构建中,它将生成一个名为git的文件。“生成/资源”文件夹中的属性。

现在, /actuator/infoendpoint也将从git.properties.生成git信息。默认情况下,它不会从git.properties.生成所有配置

如果希望在 /infoendpoint中看到完整的git配置,请在application.yml中执行以下配置

 info:
    git:
      enabled: true
      mode: full

参考文献:https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/howto-build.html#howto-build-infohttps://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/howto-build.html#howto-git-info

万俟高峻
2023-03-14

经过进一步研究,我在文件中找到了答案:

将此添加到pom.xml.maven的插件部分将在构建./目标/类/git.properties期间生成此文件。Spring将读取此文件的内容,并将其包含在/执行器/info的响应中

<plugin>
    <groupId>pl.project13.maven</groupId>
    <artifactId>git-commit-id-plugin</artifactId>
</plugin>

查看Git提交信息和生成Git信息

向sping-boot-maven插件中添加一个执行目标。这将生成文件./目标/类/META-INF/build-info.properties。Spring将读取该文件的内容,并将其包含在/执行器/info的响应中

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.1.7.RELEASE</version>
    <executions>
        <execution>
            <goals>
                <goal>build-info</goal>
            </goals>
        </execution>
    </executions>
</plugin>

来源:构建信息和生成构建信息

 类似资料:
  • 一、构建工具的作用 二、Java 主流构建工具 三、Maven 参考资料 一、构建工具的作用 构建一个项目通常包含了依赖管理、测试、编译、打包、发布等流程,构建工具可以自动化进行这些操作,从而为我们减少这些繁琐的工作。 其中构建工具提供的依赖管理能够可以自动处理依赖关系。例如一个项目需要用到依赖 A,A 又依赖于 B,那么构建工具就能帮我们导入 B,而不需要我们手动去寻找并导入。 在 Java 项

  • 你需要的就是一套工具,能把你自动化构建的需求表示成可执行的顺序的任务(tasks),比如编译源代码,拷贝生成的class文件,组装交付。每一个任务都是一个工作单元,任务的顺序很重要,我们把任务和相互之间的依赖建模成一种有向无环图,比如下面这个: 有向无环图 包含两个部分: 节点(node):一个工作单元,在这里就是一个任务,比如编译源代码 边(edge): 一个有方向的边,表示相邻节点之间的依赖关

  • 我尝试使用EMR工件存储库将emrfs-hadoop-assembly及其依赖项打包到应用程序中。 我查看了想通过Maven/Gradle获取的jar的pom.xml,得到了artifactId和groupId,但构建工具无法解决这些问题。

  • 问题内容: 我正在使用Jenkins Pipeline插件,并且需要从其他作业中通过其ID和作业名称获取特定版本的所有参数。所以,基本上我需要这样的东西。 问题答案: 我想到了。我可以像这样检索参数

  • 如何从Jenkins工作流groovy脚本中访问当前和相关的构建信息? 我可以看到像currentBuild这样的东西。结果和当前构建。previousBuild正在记录,但我看不到如何访问,例如: 当前生成作业的 URL。 此工作流触发的生成作业的 URL。 特定失败的生成作业的控制台输出等。 感谢任何指点。

  • 我使用和gradle构建失败,错误如下。 失败:生成失败,出现异常。 > 出错原因:任务“:app:predebugbuild”执行失败。 在https://help.gradle.org获得更多帮助 在1s中生成失败