gradle 构建项目添加版本信息,打包使用 spring boot 的打包插件
build.gradle 设置文件
- bootJar {
- manifest {
- attributes(
- 'Project-Name': project.name,
- 'Project-Version': project.version,
- "project-Vendor": "XXX Corp",
- "Built-By": "Gradle ${gradle.gradleVersion}",
- "Built-At": new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()),
- 'Git-Branch': getGitBranch(),
- 'Git-Commit': getGitCommit(),
- 'Git-Commit-Time': getGitCommitTime()
- )
- }
- }
- // 获取当前分支名称
- static def getGitBranch() {
- try {
- def branch = 'git rev-parse --abbrev-ref HEAD'.execute().text.trim()
- return branch ?: 'unknown'
- } catch (Exception e) {
- System.err.println("fail to get branch, errMsg:" + e.getMessage())
- return 'unknown'
- }
- }
- // 获取当前提交的记录的commitId
- static def getGitCommit() {
- try {
- def commit = 'git rev-parse HEAD'.execute().text.trim()
- return commit ?: 'unknown'
- } catch (Exception e) {
- System.err.println("fail to get commit id, errMsg:" + e.getMessage())
- return 'unknown'
- }
- }
- // 获取当前Git提交的时间
- static def getGitCommitTime() {
- try {
- def commitTime = 'git show -s --format=%ct HEAD'.execute().text.trim()
- return commitTime ? new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(Long.parseLong(commitTime) * 1000L)) : 'unknown'
- } catch (Exception e) {
- System.err.println("fail to get commit time, errMsg:" + e.getMessage())
- return 'unknown'
- }
- }
复制代码 版本信息模型
- public class VersionModel {
- private String projectName;
- private String projectVersion;
- private String projectVendor;
- private String builtBy;
- private String builtAt;
- private String gitBranch;
- private String gitCommit;
- private String gitCommitTime;
- public String getProjectName() {
- return projectName;
- }
- public void setProjectName(String projectName) {
- this.projectName = projectName;
- }
- public String getProjectVersion() {
- return projectVersion;
- }
- public void setProjectVersion(String projectVersion) {
- this.projectVersion = projectVersion;
- }
- public String getProjectVendor() {
- return projectVendor;
- }
- public void setProjectVendor(String projectVendor) {
- this.projectVendor = projectVendor;
- }
- public String getBuiltBy() {
- return builtBy;
- }
- public void setBuiltBy(String builtBy) {
- this.builtBy = builtBy;
- }
- public String getBuiltAt() {
- return builtAt;
- }
- public void setBuiltAt(String builtAt) {
- this.builtAt = builtAt;
- }
- public String getGitBranch() {
- return gitBranch;
- }
- public void setGitBranch(String gitBranch) {
- this.gitBranch = gitBranch;
- }
- public String getGitCommit() {
- return gitCommit;
- }
- public void setGitCommit(String gitCommit) {
- this.gitCommit = gitCommit;
- }
- public String getGitCommitTime() {
- return gitCommitTime;
- }
- public void setGitCommitTime(String gitCommitTime) {
- this.gitCommitTime = gitCommitTime;
- }
- @Override
- public String toString() {
- return "VersionModel{" +
- "projectName='" + projectName + '\'' +
- ", projectVersion='" + projectVersion + '\'' +
- ", implementationVendor='" + projectVendor + '\'' +
- ", builtBy='" + builtBy + '\'' +
- ", builtAt='" + builtAt + '\'' +
- ", gitBranch='" + gitBranch + '\'' +
- ", gitCommit='" + gitCommit + '\'' +
- ", gitCommitTime='" + gitCommitTime + '\'' +
- '}';
- }
- }
复制代码 版本工具类
- import com.alibaba.fastjson.JSONObject;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.io.IOException;
- import java.util.jar.Attributes;
- import java.util.jar.Manifest;
- public class BuildUtils {
- public static final String projectName = "Project-Name";
- public static final String projectVersion = "Project-Version";
- public static final String projectVendor = "Project-Vendor";
- public static final String builtBy = "Built-By";
- public static final String builtAt = "Built-At";
- public static final String gitBranch = "Git-Branch";
- public static final String gitCommit = "Git-Commit";
- public static final String gitCommitTime = "Git-Commit-Time";
- private static final Logger log = LoggerFactory.getLogger(BuildUtils.class);
- public static String getManifestAttribute(String attributeName) {
- try {
- Manifest manifest = new Manifest(BuildUtils.class.getResourceAsStream("/META-INF/MANIFEST.MF"));
- Attributes attributes = manifest.getMainAttributes();
- return attributes.getValue(attributeName);
- } catch (IOException e) {
- log.warn("fail to get info from manifest file, errMsg:{}", e.getMessage(), e);
- return "unknown";
- }
- }
- public static Attributes getManifestAttribute() {
- try {
- Manifest manifest = new Manifest(BuildUtils.class.getResourceAsStream("/META-INF/MANIFEST.MF"));
- return manifest.getMainAttributes();
- } catch (IOException e) {
- log.warn("fail to get info from manifest file, errMsg:{}", e.getMessage(), e);
- return new Attributes();
- }
- }
- public static String getManifestAttributeJsonFormat() {
- return JSONObject.toJSONString(getVersionModel(), true);
- }
- public static VersionModel getVersionModel() {
- VersionModel versionModel = new VersionModel();
- try {
- Manifest manifest = new Manifest(BuildUtils.class.getResourceAsStream("/META-INF/MANIFEST.MF"));
- versionModel.setBuiltAt(manifest.getMainAttributes().getValue(builtAt));
- versionModel.setBuiltBy(manifest.getMainAttributes().getValue(builtBy));
- versionModel.setProjectName(manifest.getMainAttributes().getValue(projectName));
- versionModel.setProjectVersion(manifest.getMainAttributes().getValue(projectVersion));
- versionModel.setProjectVendor(manifest.getMainAttributes().getValue(projectVendor));
- versionModel.setGitBranch(manifest.getMainAttributes().getValue(gitBranch));
- versionModel.setGitCommit(manifest.getMainAttributes().getValue(gitCommit));
- versionModel.setGitCommitTime(manifest.getMainAttributes().getValue(gitCommitTime));
- } catch (IOException e) {
- log.warn("fail to get info from manifest file, errMsg:{}", e.getMessage(), e);
- }
- return versionModel;
- }
- }
复制代码 方法1 controller 示例
- @RestController
- @RequestMapping("/version")
- public class VersionController {
- @GetMapping("/build")
- public VersionModel getVersionModel(){
- return BuildUtils.getVersionModel();
- }
- }
复制代码 方法2 实验 jar 包中的类实验获取版本信息
- package com.version;
- public class Version {
- public static void main(String[] args) {
- System.out.println(BuildUtils.getManifestAttributeJsonFormat());
- }
- }
复制代码 java -cp you-app.jar -Dloader.main=com.version.Version org.springframework.boot.loader.PropertiesLauncher
参考毗连
https://blog.csdn.net/russle/article/details/130658805
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |