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

【温馨提示】
阅读完本文后 不要着急行动 可以继续阅读一下
[CI]Vue+SpringBoot项目显示CI构建号(补充)
https://www.cnblogs.com/zwj/p/18826834

image

前端方案:https://www.cnblogs.com/zwj/p/18814249

deockerfile配置

# 定义构建参数
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}

pom.xml配置

    <properties>
        <java.version>17</java.version>
        <build.number>0</build.number>
    </properties>
  <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <!-- 使用 build.number 参数作为版本号 -->
                            <Build-Version>${build.number}</Build-Version>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>

读取

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.util.jar.Attributes;
import java.util.jar.Manifest;

@RestController
public class BuildInfoController {

    @Autowired
    private ResourceLoader resourceLoader;

    @GetMapping("/build-id")
    public ResponseResult getBuildId() {
        String buildId = "unknown";
        try {
            // 加载 MANIFEST.MF 文件
            Resource resource = resourceLoader.getResource("classpath:META-INF/MANIFEST.MF");
            Manifest manifest = new Manifest(resource.getInputStream());
            Attributes attributes = manifest.getMainAttributes();

            // 获取 Build-Version 属性
            buildId = attributes.getValue("Build-Version");
            if (buildId == null) {
                buildId = "unknown";
            }
        } catch (IOException e) {
            // 处理异常
            e.printStackTrace();
        }

        return ResponseResult.info(Objects.equals(buildId, "unknown") ? 0 : 1, buildId, buildId);
    }
}

打包

mvn clean package -Dbuild.number=20250410.4
posted @ 2025-04-08 10:23  萌狼蓝天  阅读(85)  评论(1)    收藏  举报