Quarkus是否具备类似SpringBoot的Git信息运行时暴露功能(适配测试环境)?
Quarkus 获取运行时Git相关信息的方案
Quarkus 确实具备类似 Spring Boot Actuator /info 接口的能力,能在运行时提供Git版本、提交信息等制品元数据,具体实现方式如下:
1. 使用 quarkus-git-info 扩展
添加该扩展后,Quarkus会自动收集当前代码仓库的Git信息(包括提交哈希、分支名称、提交时间、作者等),并将这些信息封装成GitInfo对象供应用调用。
添加依赖:
在pom.xml(Maven)中加入:<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-git-info</artifactId> </dependency>或者
build.gradle(Gradle):implementation 'io.quarkus:quarkus-git-info'暴露Git信息为REST接口:
你可以自定义一个REST端点,注入GitInfo对象并返回信息:import io.quarkus.git.GitInfo; import jakarta.inject.Inject; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; @Path("/git-info") public class GitInfoResource { @Inject GitInfo gitInfo; @GET @Produces(MediaType.APPLICATION_JSON) public GitInfo getGitInfo() { return gitInfo; } }启动应用后,访问
/git-info就能拿到结构化的Git元数据。
2. 集成到健康检查端点
如果想把Git信息和应用健康状态一起展示,可以结合quarkus-smallrye-health扩展,自定义健康检查来包含Git信息:
import io.quarkus.git.GitInfo; import jakarta.inject.Inject; import org.eclipse.microprofile.health.HealthCheck; import org.eclipse.microprofile.health.HealthCheckResponse; import org.eclipse.microprofile.health.Readiness; @Readiness public class GitInfoHealthCheck implements HealthCheck { @Inject GitInfo gitInfo; @Override public HealthCheckResponse call() { return HealthCheckResponse.named("git-info") .withData("commit-id", gitInfo.getCommitId()) .withData("branch", gitInfo.getBranch()) .withData("commit-time", gitInfo.getCommitTime().toString()) .up() .build(); } }
访问/q/health/ready就能看到包含Git信息的健康检查结果。
3. 配置与自定义
你可以通过application.properties调整Git信息的收集行为,比如:
quarkus.git.info.enabled=true:开启/关闭Git信息收集(默认开启)quarkus.git.info.commit-id-full=true:返回完整的提交哈希(默认返回短哈希)
这些配置能让你根据测试环境的需求调整输出内容。
内容的提问来源于stack exchange,提问作者Danel Rod
相关产品推荐
相关产品推荐

