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代码获取项目版本号实例的更多相关文章

  1. 用JAVA代码获取Weblogic配置的JNDI 数据源连接

    第一步:生成与JDK版本对应的weblogicjar,利用cmd 进入到weblogic_home 路径下进入到server/lib目录,然后运行  JDK  1.6 命令 "java -j ...

  2. Java中获取项目根路径和类加载路径的7种方法

    引言 在web项目开发过程中,可能会经常遇到要获取项目根路径的情况,那接下来我就总结一下,java中获取项目根路径的7种方法,主要是通过thisClass和System,线程和request等方法. ...

  3. java代码获取客户端的真实ip

    java代码获取客户端的真实ip protected String getIpAddr(HttpServletRequest request) { String ip = request.getHea ...

  4. 【java】获取项目资源路径

    目资源路径分两种,一种是普通Java项目的资源路径,另一种是JavaEE项目的资源路径. 获取Java项目的包(源码下的包 或者 jar包)的资源路径 // 方法1:通过this.getClass() ...

  5. 通过Java代码获取系统信息

    在开发中,我们需要获取JVM中的信息,以及操作系统信息,内存信息,CPU信息,磁盘信息,网络信息等,通过Java的API不能获取内存等信息,需要sigar的第三方依赖包. ①:加入依赖 <dep ...

  6. Java代码获取NTP服务器时间

    apache的commons-net包下面有ntp相关的实现类,主要类有: 1  org.apache.commons.net.ntp.NTPUDPClient ? 1  org.apache.com ...

  7. Java代码获取spring 容器的bean几种方式

    一.目的 写了一个项目,多个module,然后想在A模块中实现固定的config注入,当B模块引用A时候,能够直接填写相对应的配置信息就行了.但是遇到一个问题,B引用A时候,A的配置信息总是填充不了, ...

  8. java 代码获取视频时长

    package test; import it.sauronsoftware.jave.Encoder; import it.sauronsoftware.jave.MultimediaInfo; i ...

  9. Java反射特性--获取其他类实例并调用其方法

    1. 代码结构 .├── com│   └── test│   └── MyTest.java└── MainCall.java 2. 代码内容 MyTest.java: package com.te ...

随机推荐

  1. idea修改maven项目名

    1.修改pom.xml中相关 <artifactId>seal-hn</artifactId><name>seal-hn</name><descr ...

  2. java 堆调优

    一.查看kafka集群的broker的堆内存使用情况 1>.使用jstat查看gc的信息([root@kafka116 ~]# jstat -gc 12698 1s 30) 参数说明:S0C:第 ...

  3. Laradock中文文档

    文档地址:https://laradock.linganmin.cn

  4. [转帖]插曲:大白话带你认识Kafka

    插曲:大白话带你认识Kafka 2019-11-18 21:58:27 从事Java 阅读数 2更多 分类专栏: java Kafaka   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA ...

  5. C++分治策略实现快速排序

    问题描述: 给定一个未知顺序的n个元素组成的数组,现要利用快速排序算法对这n个元素进行非递减排序. 细节须知: (1)代码实现了利用递归对数组进行快速排序,其中limit为从已有的随机数文件中输入的所 ...

  6. Spark数据倾斜解决方案及shuffle原理

    数据倾斜调优与shuffle调优 数据倾斜发生时的现象 1)个别task的执行速度明显慢于绝大多数task(常见情况) 2)spark作业突然报OOM异常(少见情况) 数据倾斜发生的原理 在进行shu ...

  7. ELK学习笔记之logstash的各个场景应用(配置文件均已实践过)

    详细请参考该文 https://www.cnblogs.com/qingqing74647464/p/9378385.html

  8. C# 练习题 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?程序分析: 兔子的规律为数列1,1,2,3,5,8, ...

  9. Java程序员必了解的JVM原理以及虚拟机的运行过程

    JVM概念 虚拟机:指以软件的方式模拟具有完整硬件,VM概念 虚拟机:指以软件的方式模拟具有完整硬件系统功能.运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现.常用的虚拟机有VMWare ...

  10. 阿里巴巴 Java 开发手册 (七) 控制语句

    1. [强制]在一个 switch 块内,每个 case 要么通过 break/return 等来终止,要么注释说明程 序将继续执行到哪一个 case 为止:在一个 switch 块内,都必须包含一个 ...