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. Rancher容器目录持久化

    最近一直在研究Rancher的持久化问题. 目前已找到两种方式实现Rancher里的容器文件实现持久化方法. 方法一: 配置映射(只适用单个文件,不适用于目录) 这个算不上是真正的持久化,只是相当于配 ...

  2. koa2 post请求ctx.request.body空获取不到的解决办法

    header请求头添加Content-type: application/json

  3. GO语言 文件操作实例

    package main import ( "bufio" "fmt" "io/ioutil" "os" ) func ...

  4. 微信多开简单实现 WeXinMoreOpen.bat

    新建一个 WeXinMoreOpen.bat 文件,内容如下 @echo off D: cd "D:\Program Files (x86)\Tencent\WeChat" sta ...

  5. Winograd Convolution 推导 - 从1D到2D

    Winograd Convolution 推导 - 从1D到2D 姚伟峰 http://www.cnblogs.com/Matrix_Yao/ Winograd Convolution 推导 - 从1 ...

  6. C++ 工程师养成 每日一题third (子数列排序)

    题目: 定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的.牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数 ...

  7. C++中几种字符串表示方法

    最近学习C++时,被几种字符串搞的有点乱,这里记录一下. c++中有两种风格字符串,分别是: C++风格字符串 C风格字符串 它们各自的声明方式如下: void main(){ string a = ...

  8. VM配置Centos(第十三步分区设置)

    1.点击开启此虚拟机之后,选择第一个 (注意:如果鼠标不显示出来,按alt+ctrl键) 2.然后选择skip跳过检测,如果选择了ok就会有很长时间的检测 3.然后选择NEXT 4.选择中文,然后点击 ...

  9. C++ Primer第五版(中文带书签)

    本想发github的(链接更稳定),但是大小超出限制了. 本文件为扫描件,还是在我找了大半天之后的结果.能找到的免费的貌似都是扫描件,在看了一百多页之后(我不喜欢文字不能选中的感觉),我果断买了纸质书 ...

  10. Python知识点总结篇(五)

    软件目录结构规范 目标: 提高可读性: 提高可维护性: 常见结构 Demo/ |-- bin/ #存放项目的一些可执行文件 | |-- demo #可执行程序,启动demo调main.py | |-- ...