Spring Boot 使用maven作为构建工具时,通过/actuator/info端点提供Sping Boot git和构建信息

ncgqoxb0  于 2023-11-17  发布在  Spring
关注(0)|答案(5)|浏览(158)

我正在使用这个Sping Boot guide Building a RESTful Web Service with Spring Boot Actuator。当访问端点/actuator/info时,我得到了空的JSON响应{}
致动器API文档提到了响应结构,其中包含构建信息,如 artifact,group,name,version 和git信息,如 * 分支,commit* 等。
如何启用文档化的响应结构。我想使用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>

字符串

htzpubme

htzpubme1#

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

Git信息

将其添加到pom.xml的plugins部分。maven将在构建./target/classes/git.properties期间生成此文件。Spring将读取此文件的内容并将其包含在/actuator/info的响应中

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

字符串
请参阅Git提交信息和生成Git信息

Build信息

向spring-boot-maven插件添加执行目标。这将生成文件./target/classes/META-INF/build-info.properties。Spring将读取此文件的内容并将其包含在/actuator/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>


来源:Build Information和Generate Build Information

kx7yvsdv

kx7yvsdv2#

下面是Gradle上的工作解决方案。Gralde版本7.3.2 SpringBoot版本:2.6.1
要包含项目的执行器。below依赖项应添加到build.gradle文件中。

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

字符串
默认情况下,只有健康是通过网络提供的。因此,要启用信息执行器,请在应用程序中添加下面的条目。yml

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


现在,当我们运行应用程序并尝试访问/actuator/info端点时,它会打印空的json作为响应。这是info actuator end point的默认行为。
要从build.gradle生成buildInfo,请在gradle文件中添加以下内容

springBoot {
    buildInfo()
}


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

{"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"


一旦完成,在项目构建时,它将在您的build/resources文件夹中生成一个名为git.properties的文件。
现在/actuator/info端点也将从git.properties生成git信息。默认情况下,它不会从git.properties生成所有的参数。
如果你想在/info endpoint中看到完整的git配置,在application.yml中执行下面的配置

management:
  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

7vux5j2d

7vux5j2d3#

例如,您可以通过将以下内容添加到您的application.properties

[email protected]@
[email protected]@
[email protected]@
[email protected]@

字符串
来源:https://dzone.com/articles/magic-with-spring-boot-actuator

nzrxty8p

nzrxty8p4#

我遇到了同样的问题,/actuator/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 -> compile。现在,在target/classes应该生成git.properties和META-INF文件夹与build-info.properties。
最后,运行您的应用程序,就是这样!

ycl3bljg

ycl3bljg5#

上面所有的回答都缺少了一些东西,所以我是这样做的:

<plugin>
  <groupId>pl.project13.maven</groupId>
  <artifactId>git-commit-id-plugin</artifactId>
  <version>4.9.10</version>
  <configuration>
                <failOnNoGitDirectory>false</failOnNoGitDirectory>
                <!-- this is false by default, forces the plugin to generate the git.properties file -->
                <generateGitPropertiesFile>true</generateGitPropertiesFile>
                <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
  </configuration>
</plugin>

字符串

<resources>
      <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
      </resource>
</resources>


然后将生成git.properties文件,因此您基本上可以检查所需值的键并访问它,例如:

@git.build.version@

相关问题