Browse Source

添加版本信息接口

pull/151/head
648540858 3 years ago
parent
commit
dbc525e8fb
  1. 6
      pom.xml
  2. 136
      src/main/java/com/genersoft/iot/vmp/common/VersionPo.java
  3. 2
      src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java
  4. 37
      src/main/java/com/genersoft/iot/vmp/conf/VersionConfig.java
  5. 37
      src/main/java/com/genersoft/iot/vmp/conf/VersionInfo.java
  6. 44
      src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java
  7. 73
      src/main/java/com/genersoft/iot/vmp/utils/JarFileUtils.java
  8. 16
      src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java

6
pom.xml

@ -13,6 +13,7 @@
<artifactId>wvp-pro</artifactId> <artifactId>wvp-pro</artifactId>
<version>2.0</version> <version>2.0</version>
<name>web video platform</name> <name>web video platform</name>
<description>国标28181视频平台</description>
<repositories> <repositories>
<repository> <repository>
@ -250,6 +251,11 @@
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>

136
src/main/java/com/genersoft/iot/vmp/common/VersionPo.java

@ -0,0 +1,136 @@
package com.genersoft.iot.vmp.common;
import com.alibaba.fastjson.annotation.JSONField;
public class VersionPo {
/**
* git的全版本号
*/
@JSONField(name="GIT-Revision")
private String GIT_Revision;
/**
* maven版本
*/
@JSONField(name = "Create-By")
private String Create_By;
/**
* git的分支
*/
@JSONField(name = "GIT-BRANCH")
private String GIT_BRANCH;
/**
* git的url
*/
@JSONField(name = "GIT-URL")
private String GIT_URL;
/**
* 构建日期
*/
@JSONField(name = "BUILD-DATE")
private String BUILD_DATE;
/**
* 项目名称 配合pom使用
*/
@JSONField(name = "artifactId")
private String artifactId;
/**
* git局部版本号
*/
@JSONField(name = "GIT-Revision-SHORT")
private String GIT_Revision_SHORT;
/**
* 项目的版本如2.0.1.0 配合pom使用
*/
@JSONField(name = "version")
private String version;
/**
* 子系统名称
*/
@JSONField(name = "project")
private String project;
/**
* jdk版本
*/
@JSONField(name="Build_Jdk")
private String Build_Jdk;
public void setGIT_Revision(String GIT_Revision) {
this.GIT_Revision = GIT_Revision;
}
public void setCreate_By(String create_By) {
Create_By = create_By;
}
public void setGIT_BRANCH(String GIT_BRANCH) {
this.GIT_BRANCH = GIT_BRANCH;
}
public void setGIT_URL(String GIT_URL) {
this.GIT_URL = GIT_URL;
}
public void setBUILD_DATE(String BUILD_DATE) {
this.BUILD_DATE = BUILD_DATE;
}
public void setArtifactId(String artifactId) {
this.artifactId = artifactId;
}
public void setGIT_Revision_SHORT(String GIT_Revision_SHORT) {
this.GIT_Revision_SHORT = GIT_Revision_SHORT;
}
public void setVersion(String version) {
this.version = version;
}
public void setProject(String project) {
this.project = project;
}
public void setBuild_Jdk(String build_Jdk) {
Build_Jdk = build_Jdk;
}
public String getGIT_Revision() {
return GIT_Revision;
}
public String getCreate_By() {
return Create_By;
}
public String getGIT_BRANCH() {
return GIT_BRANCH;
}
public String getGIT_URL() {
return GIT_URL;
}
public String getBUILD_DATE() {
return BUILD_DATE;
}
public String getArtifactId() {
return artifactId;
}
public String getGIT_Revision_SHORT() {
return GIT_Revision_SHORT;
}
public String getVersion() {
return version;
}
public String getProject() {
return project;
}
public String getBuild_Jdk() {
return Build_Jdk;
}
}

2
src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java

@ -141,8 +141,6 @@ public class ProxyServletConfig {
} }
} }
@Bean @Bean
public ServletRegistrationBean recordServletRegistrationBean(){ public ServletRegistrationBean recordServletRegistrationBean(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new RecordProxySerlet(),"/record_proxy/*"); ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new RecordProxySerlet(),"/record_proxy/*");

37
src/main/java/com/genersoft/iot/vmp/conf/VersionConfig.java

@ -0,0 +1,37 @@
package com.genersoft.iot.vmp.conf;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "version")
public class VersionConfig {
private String version;
private String artifactId;
private String description;
public void setVersion(String version) {
this.version = version;
}
public void setArtifactId(String artifactId) {
this.artifactId = artifactId;
}
public void setDescription(String description) {
this.description = description;
}
public String getVersion() {
return version;
}
public String getArtifactId() {
return artifactId;
}
public String getDescription() {
return description;
}
}

37
src/main/java/com/genersoft/iot/vmp/conf/VersionInfo.java

@ -0,0 +1,37 @@
package com.genersoft.iot.vmp.conf;
import com.genersoft.iot.vmp.common.VersionPo;
import com.genersoft.iot.vmp.utils.GitUtil;
import com.genersoft.iot.vmp.utils.JarFileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class VersionInfo {
@Autowired
VersionConfig config;
@Autowired
GitUtil gitUtil;
@Autowired
JarFileUtils jarFileUtils;
public VersionPo getVersion() {
VersionPo versionPo = new VersionPo();
Map<String,String> map=jarFileUtils.readJarFile();
versionPo.setGIT_Revision(gitUtil.getGitCommitId());
versionPo.setCreate_By(map.get("Created-By"));
versionPo.setGIT_BRANCH(gitUtil.getBranch());
versionPo.setGIT_URL(gitUtil.getGitUrl());
versionPo.setBUILD_DATE(gitUtil.getBuildDate());
versionPo.setArtifactId(config.getArtifactId());
versionPo.setGIT_Revision_SHORT(gitUtil.getCommitIdShort());
versionPo.setVersion(config.getVersion());
versionPo.setProject(config.getDescription());
versionPo.setBuild_Jdk(map.get("Build-Jdk"));
return versionPo;
}
}

44
src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java

@ -0,0 +1,44 @@
package com.genersoft.iot.vmp.utils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* 一个优秀的颓废程序猿CSDN
*/
@Component
@PropertySource(value = {"classpath:git.properties" }, ignoreResourceNotFound = true)
public class GitUtil {
@Value("${git.branch:null}")
private String branch;
@Value("${git.commit.id:null}")
private String gitCommitId;
@Value("${git.remote.origin.url:null}")
private String gitUrl;
@Value("${git.build.time:null}")
private String buildDate;
@Value("${git.commit.id.abbrev:null}")
private String commitIdShort;
public String getGitCommitId() {
return gitCommitId;
}
public String getBranch() {
return branch;
}
public String getGitUrl() {
return gitUrl;
}
public String getBuildDate() {
return buildDate;
}
public String getCommitIdShort() {
return commitIdShort;
}
}

73
src/main/java/com/genersoft/iot/vmp/utils/JarFileUtils.java

@ -0,0 +1,73 @@
package com.genersoft.iot.vmp.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.ClassUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
/**
* 一个优秀的颓废程序猿
*/
@Component
public class JarFileUtils {
private static Logger log = LoggerFactory.getLogger(JarFileUtils.class);
private static Map<String, String> map = new HashMap<>();
public Map<String, String> readJarFile() {
JarFile jarFile = null;
BufferedReader br = null;
try {
// 获取jar的运行路径,因linux下jar的路径为”file:/app/.../test.jar!/BOOT-INF/class!/“这种格式,所以需要去掉”file:“和”!/BOOT-INF/class!/“
String jarFilePath = ClassUtils.getDefaultClassLoader().getResource("").getPath().replace("!/BOOT-INF/classes!/", "");
if (jarFilePath.startsWith("file")) {
jarFilePath = jarFilePath.substring(5);
}
log.debug("jarFilePath:" + jarFilePath);
// 通过JarFile的getJarEntry方法读取META-INF/MANIFEST.MF
jarFile = new JarFile(jarFilePath);
JarEntry entry = jarFile.getJarEntry("META-INF/MANIFEST.MF");
log.info("读取的内容:" + entry.toString());
// 如果读取到MANIFEST.MF文件内容,则转换为string
if (entry != null) {
InputStream in = jarFile.getInputStream(entry);
StringBuilder sb = new StringBuilder();
br = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = br.readLine()) != null) {
if (line != null && line.contains(":")) {
int index = line.indexOf(":");
map.put(line.substring(0, index).trim(), line.substring(index + 1, line.length()).trim());
}
}
return map;
}
} catch (IOException e) {
log.debug("读取MANIFEST.MF文件异常:" + e.getMessage());
} finally {
try {
if (null != br) {
br.close();
}
if (null != jarFile) {
jarFile.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return map;
}
}

16
src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java

@ -1,6 +1,8 @@
package com.genersoft.iot.vmp.vmanager.server; package com.genersoft.iot.vmp.vmanager.server;
import com.genersoft.iot.vmp.VManageBootstrap; import com.genersoft.iot.vmp.VManageBootstrap;
import com.genersoft.iot.vmp.common.VersionPo;
import com.genersoft.iot.vmp.conf.VersionInfo;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.service.IMediaServerService; import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.utils.SpringBeanFactory; import com.genersoft.iot.vmp.utils.SpringBeanFactory;
@ -31,6 +33,9 @@ public class ServerController {
@Autowired @Autowired
private IMediaServerService mediaServerService; private IMediaServerService mediaServerService;
@Autowired
VersionInfo versionInfo;
@ApiOperation("流媒体服务列表") @ApiOperation("流媒体服务列表")
@GetMapping(value = "/media_server/list") @GetMapping(value = "/media_server/list")
@ -97,4 +102,15 @@ public class ServerController {
restartThread.start(); restartThread.start();
return "success"; return "success";
} }
@ApiOperation("版本信息")
@GetMapping(value = "/version")
@ResponseBody
public WVPResult<VersionPo> getVersion(){
WVPResult<VersionPo> result = new WVPResult<>();
result.setCode(0);
result.setMsg("success");
result.setData(versionInfo.getVersion());
return result;
}
} }

Loading…
Cancel
Save