gpt4 book ai didi

spring-boot - 在 Jenkins、Spring Boot 和 Gradle 环境中构建版本号

转载 作者:行者123 更新时间:2023-12-03 03:53:16 24 4
gpt4 key购买 nike

我有 Spring Boot Web 应用程序并想在我的应用程序中显示版本号。版本号应该类似于 v1.2.3#BUILD_NUMBER,其中 BUILD_NUMBER 是来自 Jenkins 的内部版本号。我怎样才能做到这一点?

最佳答案

首先,让我们确保 Gradle 知道内部版本号。 Jenkins 通过环境变量使其可用。我们可以把它放在正常的version Gradle 项目中的字段:

version = "1.0-" + (System.getenv("BUILD_NUMBER") ?: "SNAPSHOT")
从这里我们必须将它放入您的应用程序可以读取的文件中。有两种很好的方法可以做到这一点,我通常同时使用这两种方法。
首先,我们更新最终 jar 中的标准 MANIFEST.MF 文件:
bootJar {
manifest {
attributes(
"Implementation-Title": project.name,
"Implementation-Version": project.version
)
}
}
默认情况下,Spring Boot 会在启动时打印一个横幅,它会读取这些属性并将它们打印出来。您可以自定义横幅,但在您这样做之前,它应该看起来像这样:
  .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.5.RELEASE)

2020-11-06 16:00:56.394 INFO 3144 --- [main] com.example.App : Starting App v1.0-SNAPSHOT on PF18RJAD with PID 3144 (C:\Work\Temp\buildinfo-example\app\build\libs\app-1.0-SNAPSHOT.jar started by bmv in C:\Work\Temp\buildinfo-example\app)
2020-11-06 16:00:56.398 INFO 3144 --- [main] com.example.App : No active profile set, falling back to default profiles: default
2020-11-06 16:00:57.181 INFO 3144 --- [main] com.example.App : Started App in 1.292 seconds (JVM running for 1.908)
请注意“Starting App v1.0-SNAPSHOT”行,其中“SNAPSHOT”将替换为环境变量(如果存在)。
但请注意,因为 MANIFEST.INF 仅作为 jar 的一部分创建,它不会在测试中显示或通过运行 bootRun任务。您必须运行最终的“引导 jar”(例如 java -jar build/libs/app-1.0-SNAPSHOT.jar)。
其次,您可以使用 BuildInfo任务。这使 Actuator 能够阅读有关构建的更多详细信息,并使您更容易以编程方式查询它们:
springBoot {
buildInfo()
}
这将生成一个文件 META-INF/build-info.properties在您的应用程序中使用版本、工件名称或自定义值等构建信息。您可以通过注入(inject) BuildProperties 来查询它们。实例:
@Autowired
BuildProperties buildProperties;
使用它来获取有关构建的信息:
public void greet() {
System.out.println("Hello version: " + buildProperties.getVersion());
}
它应该输出:
Hello version: 1.0-SNAPSHOT
如果您使用 Actuator,它还会从构建属性文件中获取信息。

关于spring-boot - 在 Jenkins、Spring Boot 和 Gradle 环境中构建版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64712689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com