java代码获取项目版本号实例
package com.hzcominfo.application.etl.settings.web.controller.highconfig; import com.hzcominfo.application.common.base.cmpt.web.controller.index.BaseController;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties; @Controller
@RequestMapping("/mavenTest/")
public class MavenTest extends BaseController { /**
* 是否是windows系统
*
* @return
*/
private static boolean isWindows() {
String osName = System.getProperty("os.name");
if (osName != null && osName.toLowerCase().indexOf("win") >= 0) {
return true;
}
return false;
} /**
* 查看jar包中maven版本号
*
* @return
* @throws IOException
* @throws XmlPullParserException
*/
@ResponseBody
@RequestMapping("test")
public String getJarPath() throws IOException, XmlPullParserException {
//查看jar包里面pom.properties版本号
String jarPath = MavenTest.class.getProtectionDomain().getCodeSource().getLocation().getFile();
jarPath = java.net.URLDecoder.decode(jarPath, "UTF-8");
try {
URL url = new URL("jar:file:" + jarPath + "!/META-INF/maven/com.hzcominfo.application.etl-settings/application-etl-settings/pom.properties");
InputStream inputStream = url.openStream();
Properties properties = new Properties();
properties.load(inputStream);
String version = properties.getProperty("version");
return version;
} catch (Exception e) {
e.printStackTrace();
//开发过程中查看pom.xml版本号
MavenXpp3Reader reader = new MavenXpp3Reader();
String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
if (isWindows() && basePath.startsWith("/")) {
basePath = basePath.substring(1);
}
if (basePath.indexOf("/target/") != -1) {
basePath = basePath.substring(0, basePath.indexOf("/target/"));
}
Model model = reader.read(new FileReader(new File(basePath + "\\pom.xml")));
String version = model.getVersion();
return version;
}
}
}
package com.hzcominfo.application.common.base.cmpt.web.controller.common.util; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import com.alibaba.fastjson.JSONObject;
import com.hzcominfo.application.common.base.cmpt.web.controller.index.BaseController;
import com.hzcominfo.application.common.util.DatetimeUtil;
import com.hzcominfo.application.common.util.StringUtil; /**
* 获取项目maven版本号
*
* @Author:linzp
*/
@Controller
@RequestMapping("/mavenVersion/")
public class MavenVersion extends BaseController { @Value("${other.info:Copyright info}")
private String otherInfo; /**
* 查看jar包中maven版本号
*
* @return
*/
@ResponseBody
@RequestMapping("getVersion")
public JSONObject getJarPath(String groupId, String artifactId,String jarName, String fileName) {
JSONObject jSONObject = new JSONObject();
Map<String, Object> versionInfo = new HashMap<String, Object>();
//查看jar包里面pom.properties版本号
try {
// String jarPath = MavenVersion.class.getProtectionDomain().getCodeSource().getLocation().getFile();
String pomVersion = "";
try{
String jarPath = System.getProperty("user.dir") + File.separator + jarName;
jarPath = java.net.URLDecoder.decode(jarPath, "UTF-8");
logger.info("version info : " + jarPath);
URL url = new URL("jar:file:" + jarPath + "!/META-INF/maven/" + groupId + "/" + artifactId + "/pom.properties");
Properties properties = new Properties();
properties.load(url.openStream());
pomVersion = properties.getProperty("version");
}catch(Exception e){
logger.error("read jar or pom error:",e);
}
String version = "";
if(StringUtil.isEmpty(fileName))fileName="version.txt";
// if(StringUtil.isNotEmpty(fileName)){
File otherInfoFile = new File(System.getProperty("user.dir") + File.separator + fileName);
Long filelength = otherInfoFile.length();
byte[] filecontent = new byte[filelength.intValue()];
try {
FileInputStream in = new FileInputStream(otherInfoFile);
in.read(filecontent);
in.close();
version += new String(filecontent, "utf-8");
} catch (FileNotFoundException e) {
logger.error("version file not found :" , e);
} catch (IOException e) {
logger.error("version file read error :" , e);
}
// }
versionInfo.put("versionInfo", version);
versionInfo.put("pomVersion", pomVersion);
versionInfo.put("jvmName", System.getProperty("java.vm.name"));
versionInfo.put("jvmVendor", System.getProperty("java.vm.vendor"));
versionInfo.put("javaVersion", System.getProperty("java.version"));
versionInfo.put("otherInfo", otherInfo);
versionInfo.put("serviceTime", DatetimeUtil.getDate());
jSONObject.put("result", "0");
jSONObject.put("versionInfo", versionInfo);
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
jSONObject.put("result", "1");
}
return jSONObject;
}
public static void aaa(){
// System.out.println(MavenVersion.class.getProtectionDomain().getCodeSource().getLocation().getFile());
// System.out.println(System.getProperty("java.vm.name"));
System.out.println(DatetimeUtil.getDate());
}
public static void main(String[] args) {
// System.out.println(MavenVersion.class.getProtectionDomain().getCodeSource().getLocation().getFile());
MavenVersion.aaa();
}
}
versionDataFlag = true;
function getVersionInfo(){
if(versionDataFlag){
versionDataFlag = false;
//获取版本号
$.ajax({
type: "post",
datatype: "json",
async: true,
url: rootPath + "/mavenVersion/getVersion",
data: {
groupId: "com.hzcominfo.application.etl-settings",
artifactId: "application-etl-settings",
jarName: "etl.jar",
fileName: "version.txt"
},
success: function (data) {
versionDataFlag = true;
var resultObject = JSON.parse(data);
if (resultObject.result == "0") {
$("#versionInfo").text(resultObject.versionInfo.versionInfo);
$("#jvmName").text(resultObject.versionInfo.jvmName);
$("#jvmVendor").text(resultObject.versionInfo.jvmVendor);
$("#javaVersion").text(resultObject.versionInfo.javaVersion);
$("#serviceTime").text(resultObject.versionInfo.serviceTime);
//$("#projectVersionA").show();
} else {
//$("#projectVersionA").remove();
$("#versionInfo").text("");
$("#jvmName").text("");
$("#jvmVendor").text("");
$("#javaVersion").text("");
$("#serviceTime").text("");
}
pageii = layer.open({
type: 1,
title: '关于',
shadeClose: true,
shade: 0.8,
area: ['400px', '250px'],
content: $("#aboutVersion").html()
});
},
error: function(data){
versionDataFlag = true;
$("#versionInfo").text("");
$("#jvmName").text("");
$("#jvmVendor").text("");
$("#javaVersion").text("");
$("#serviceTime").text("");
pageii = layer.open({
type: 1,
title: '关于',
shadeClose: true,
shade: 0.8,
area: ['400px', '250px'],
content: $("#aboutVersion").html()
});
}
});
}
}
function closeAbout(){
layer.close(pageii);
}
java代码获取项目版本号实例的更多相关文章
- 用JAVA代码获取Weblogic配置的JNDI 数据源连接
第一步:生成与JDK版本对应的weblogicjar,利用cmd 进入到weblogic_home 路径下进入到server/lib目录,然后运行 JDK 1.6 命令 "java -j ...
- Java中获取项目根路径和类加载路径的7种方法
引言 在web项目开发过程中,可能会经常遇到要获取项目根路径的情况,那接下来我就总结一下,java中获取项目根路径的7种方法,主要是通过thisClass和System,线程和request等方法. ...
- java代码获取客户端的真实ip
java代码获取客户端的真实ip protected String getIpAddr(HttpServletRequest request) { String ip = request.getHea ...
- 【java】获取项目资源路径
目资源路径分两种,一种是普通Java项目的资源路径,另一种是JavaEE项目的资源路径. 获取Java项目的包(源码下的包 或者 jar包)的资源路径 // 方法1:通过this.getClass() ...
- 通过Java代码获取系统信息
在开发中,我们需要获取JVM中的信息,以及操作系统信息,内存信息,CPU信息,磁盘信息,网络信息等,通过Java的API不能获取内存等信息,需要sigar的第三方依赖包. ①:加入依赖 <dep ...
- Java代码获取NTP服务器时间
apache的commons-net包下面有ntp相关的实现类,主要类有: 1 org.apache.commons.net.ntp.NTPUDPClient ? 1 org.apache.com ...
- Java代码获取spring 容器的bean几种方式
一.目的 写了一个项目,多个module,然后想在A模块中实现固定的config注入,当B模块引用A时候,能够直接填写相对应的配置信息就行了.但是遇到一个问题,B引用A时候,A的配置信息总是填充不了, ...
- java 代码获取视频时长
package test; import it.sauronsoftware.jave.Encoder; import it.sauronsoftware.jave.MultimediaInfo; i ...
- Java反射特性--获取其他类实例并调用其方法
1. 代码结构 .├── com│ └── test│ └── MyTest.java└── MainCall.java 2. 代码内容 MyTest.java: package com.te ...
随机推荐
- jquery如何生成图片验证码
jQuery(function($){ /**生成一个随机数**/ function randomNum(min, max) { return Math.floor(Math.random() * ( ...
- 【idea】设置背景颜色
File->Settings->Editor->Color Scheme->General->Text->Default text->Background
- Delphi TButton.OnClick 匿名函数用法
type TNotifyEventRef = reference to procedure(Sender: TObject); function AnonymousEvent(const Proc: ...
- go上传图片微信服务器<<临时素材
type WxImage struct { Type string `json:"type"` MediaId string `json:"media_id"` ...
- docker-compose up 启动容器服务超时错误:ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
问题: 本人正在使用docker运行一个中型的项目,包含40多个微服务及相关的docker.由于docker-compose up 同时启动的服务过多,超过了请求HTTP限制的60s时间仍未全部成功启 ...
- Chrome 谷歌开发者工具使用窍门
我们这里介绍主要的几块:Console.Source.Network Console 大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的, ...
- Vert.x 异步访问数据库 MySQL
Vert.x提供异步访问数据库的API,数据库操作是一个耗时操作,使用传统的同步模型,容易阻塞线程,导致整体性能下降,因此我们对于数据库操作,需要使用Vert.x提供的异步API. Vert.x提供的 ...
- NIO开发Http服务器(5-完结):HttpServer服务器类
最近学习了Java NIO技术,觉得不能再去写一些Hello World的学习demo了,而且也不想再像学习IO时那样编写一个控制台(或者带界面)聊天室.我们是做WEB开发的,整天围着tomcat.n ...
- PE系统——安装教程
本教程使用到的软件我会在本文末给出,若失效了请私信我,重新上传. 1.安装PE系统前,把U盘插在电脑上(如果你需要安装Windows10系统,请插入一个容量至少8G的U盘).当然容量最好是32—64G ...
- StopWatch方法详解
namespace System.Diagnostics { // // 摘要: // 提供一组方法和属性,可用于准确地测量运行时间. public class Stopwatch { // // 摘 ...