【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了
一些关键地方请见如下图
然后修改配置文件
# 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
然后测试
成功
结合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了
如果之间有配置好的管道,那么在之前的管道。点进去,然后点击 运行管道,选择你对应的分支
先直接运行,看看有问题没,没问题的话,点进运行的结果,点击三个点,然后编辑管道
然后填写参数
--build-arg BUILD_NUMBER=$(Build.BuildNumber)
ok后,保存并排队,然后点进去发布即可
最后,到发布页面,选择自己发布的部署即可
不使用@占位符
支持yml格式配置文件
build.id= ${build.number}
这种方式需要配置一个默认值
<properties>
<java.version>17</java.version>
<build.number>0</build.number>
</properties>
然后执行命令 mvn clean package -Dbuild.number=12345
即可
版 权 声 明
作者:萌狼蓝天
QQ:3447902411(仅限技术交流,添加请说明方向)
转载请注明原文链接:https://www.cnblogs.com/zwj/p/18812554/java-build-version-by-mavem