基于 Maven 生成 Spring Boot 项目版本构建版本

在软件开发过程中,了解项目的构建版本对于调试、跟踪和管理软件发布至关重要。本文中,将使用 Maven 生成构建时间来为 Spring Boot 项目生成构建版本信息。

一、、使用 Maven 插件生成构建版本

可以使用 Maven 插件来生成构建版本信息。在本文中,我们将使用build-helper-maven-plugin插件来生成时间戳作为构建版本信息。

1. pom.xml 配置

首先,我们需要在项目的pom.xml文件中添加build-helper-maven-plugin插件的配置。以下是配置示例:

<build>
    <plugins>
        <!-- 使用 build-helper-maven-plugin 插件生成时间戳或随机数 -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.6.0</version>
            <executions>
                <execution>
                    <id>generate-random-number</id>
                    <goals>
                        <goal>timestamp-property</goal>
                    </goals>
                    <phase>validate</phase>
                    <configuration>
                        <name>build.number</name>
                        <pattern>yyyyMMdd-HHmmss</pattern>
                        <locale>zh_CN</locale>
                        <timeZone>Asia/Shanghai</timeZone>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <!-- Maven Resources Plugin for filtering properties in resources -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.3.1</version>
            <executions>
                <execution>
                    <id>default-resources</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>resources</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                                <directory>src/main/resources</directory>
                                <filtering>true</filtering> <!-- 启用资源文件过滤 -->
                            </resource>
                        </resources>
                        <delimiters>
                            <delimiter>@</delimiter>
                        </delimiters>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

在上述配置中,使用build-helper-maven-plugin插件的timestamp-property目标来生成一个时间戳,并将其存储在build.number属性中。该插件的时间戳的格式默认为UTC时间,可以通过配置地区和时区。

为了在应用程序中使用构建版本信息,需要在资源文件中引用这个属性。我们可以使用maven-resources-plugin插件来进行资源文件过滤。

在上述配置中,启用了资源文件过滤,并设置了资源文件的目录为src/main/resources

2. application.properties

为了在应用程序中使用构建版本信息,我们可以在application.properties文件中定义一个属性,并使用${build.number}来引用生成的构建版本信息。以下是示例:

build.number=devmode
build.version="${build.number}"

在上述配置中,定义了一个分别定义了build.numberbuild.version属性,并将build.version的值设置为${build.number},在使用Idea进行调试时,会使用build.number的属;当使用maven构建项目时,build.version属性将被替换为生成的构建版本信息;
如:

build.number=devmode
build.version="20240831-111514"

3. 应用中使用

接下来,可以在应用程序的代码中使用这个属性。以下是一个使用 Spring Boot 的示例:

@Log4j2
@RestController
@RequestMapping("/common")
public class IndexController {
    @Value("${build.version}")
    private String buildTime;

    @GetMapping("/version")
    public String version() {
        return buildTime;
    }
}

在上述代码中,使用@Value注解将build.version属性注入到buildTime变量中。然后,我们在/version端点中返回这个构建版本信息。

posted @ 2024-08-31 11:36  Mageric  阅读(57)  评论(0编辑  收藏  举报