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 ...
随机推荐
- 海康—SADP激活(设备网络搜索)
海康sadp搜索工具(SADPTool)用于从网络上搜索同一网段内的所有在线设备.可以修改设备的缺省密码,修改网络IP地址及端口号 ,子网掩码及网关地址,IPV6地址网关地址,HTTP端口号和设备序列 ...
- 浅谈 Docker 安全合规建设
通过阅读网上帖子及浏览相关信息,大家可能会产生一种错觉:Docker 安全性不足,对 Docker 导入生产环境持保守态度.不过实际情况是,虽然我们需要对容器的安全性高度关注,但只要使用得当,完全可以 ...
- 二级C语言模拟试题(第1套)
1. 选择题. 1-1,判断各种变量所占的字节数. #include<stdio.h> int main() { char p[] = {'6','2','3'}, *q = p; int ...
- thinkphp3.2.2公用函数
thinkphp3.2.2公用函数函数调用默认路径 home/Common/function.php
- C_局部变量&全局变量
2018-5-9 Writen By Stephen.Yu 一.定义 1. 局部变量:在函数中定义的变量 2. 全局变量:在所有函数体之外定义 定义(Definition):声明并分配内存;未分 ...
- python_socket (套接字)
socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的. 网络上两个程序通过一个双向的通信连接实现数据的交换,这个连接 ...
- ConcurrentDictionary,ConcurrentStack,ConcurrentQueue
static void Main(string[] args) { var concurrentDictionary = new ConcurrentDictionary<int, string ...
- 一个牛逼的 Python 调试工具PySnooper
原文转自:https://mp.weixin.qq.com/s/OtLr-cNethboMgmCcUx2pA PySnooper 使用起来十分简单,开发者可以在任何庞大的代码库中使用它,而无需进行任何 ...
- Java自学-数组 复制数组
Java 如何复制数组 数组的长度是不可变的,一旦分配好空间,是多长,就多长,不能增加也不能减少 步骤 1 : 复制数组 把一个数组的值,复制到另一个数组中 System.arraycopy(src, ...
- 百度地图 libBaiduMapSDK_base_v4_2_1.so" is 32-bit instead of 64-bit错误
20191111 集成android sdk,华为手机基本都启动报错,如下: W/System.err: java.security.NoSuchProviderException: no such ...