【Java】maven打包时自定义版本号,并通过接口返回前端(Maven占位法)

总体说了这种办法不是很好,建议采用 https://www.cnblogs.com/zwj/p/18814139 这种办法

@占位方法 不支持yml配置文件,需要支持yml配置文件请见后文 使用${变量} 的方式(更推荐)

maven配置

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <delimiters>
                        <delimiter>@</delimiter>
                    </delimiters>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

false 如果使用了默认的方式,就不要改为false了

一些关键地方请见如下图

image

然后修改配置文件

# mvn clean package -Dbuild.number=12345
build.id=@build.number@

然后增加接口

@Value("${build.id:unknown}")
    private String buildId;

    /**
     * get docker build id
     * @return docker-build-id
     */
    @Operation(
            summary = "获取Docker构建ID",
            description = "获取Docker构建ID"
    )
    @GetMapping("/build-id")
    public ResponseResult getBuildId() {
        return ResponseResult.info(Objects.equals(buildId, "unknown") ?0:1,buildId,buildId);
    }

然后打包

mvn clean package -Dbuild.number=20250410.1

然后运行jar包

java -jar jar包文件名.jar

然后测试
image

成功

结合CI\CD

以Azure DevOps平台、docker构建为例

由于是使用docker进行构建的,因此需要修改一下dockerfile

# 定义构建参数
ARG BUILD_NUMBER
ENV BUILD_NUMBER=${BUILD_NUMBER}
# 使用传递的 BUILD_NUMBER 参数进行 Maven 构建
RUN mvn install -Dbuild.number=${BUILD_NUMBER}

COPY ./ /app/

RUN mvn -threads 4 clean install -DskipTests -Dbuild.number=${BUILD_NUMBER}

修改好后提交到分支,接下来就是操作CI了

如果之间有配置好的管道,那么在之前的管道。点进去,然后点击 运行管道,选择你对应的分支

image

先直接运行,看看有问题没,没问题的话,点进运行的结果,点击三个点,然后编辑管道

image

然后填写参数

--build-arg BUILD_NUMBER=$(Build.BuildNumber)

image
ok后,保存并排队,然后点进去发布即可

最后,到发布页面,选择自己发布的部署即可

不使用@占位符

支持yml格式配置文件

build.id= ${build.number}

这种方式需要配置一个默认值

    <properties>
        <java.version>17</java.version>
        <build.number>0</build.number>
    </properties>

然后执行命令 mvn clean package -Dbuild.number=12345即可

posted @ 2025-04-07 13:41  萌狼蓝天  阅读(23)  评论(0)    收藏  举报