项目环境: JDK7+Maven3.04

项目架构:SpringMVC

  • 方法一:API访问Maven生成的MANIFEST.MF

1. 在pom.xml中添加jar包支持

<dependency>
<groupId>com.jcabi</groupId>
<artifactId>jcabi-manifests</artifactId>
<version>1.1</version>
</dependency>

2. pom.xml配置

配置archive添加

built-at: 编译时间

env: 环境

project-version: 代码分支号

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>artifact-package</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<archiveClasses>true</archiveClasses>
<warSourceExcludes>WEB-INF/lib/servlet-*</warSourceExcludes>
<archive>
<manifestEntries>
<built-at>${maven.build.timestamp}</built-at>
<env>${env}</env>
<project-version>${project.version}</project-version>
</manifestEntries>
</archive>
</configuration>
</execution>
<execution>
<id>local-package</id>
<phase>package</phase>
<goals>
<goal>exploded</goal>
</goals>
<configuration>
<primaryArtifact>false</primaryArtifact>
<webappDirectory>${project.build.directory}/hiv-local</webappDirectory>
<archiveClasses>true</archiveClasses>
<warSourceExcludes>WEB-INF/lib/servlet-*</warSourceExcludes>
<archive>
<manifestEntries>
<built-at>${maven.build.timestamp}</built-at>
<env>${env}</env>
<project-version>${project.version}</project-version>
</manifestEntries>
</archive>
</configuration>
</execution>
</executions>
</plugin>

3. 编译后结果如下

META-INF/MANIFEST.MF

Manifest-Version: 1.0
Built-By: dell
Build-Jdk: 1.7.0_75
project-version: develop-SNAPSHOT
Created-By: Apache Maven 3.0.4
built-at: 2015-07-02 13:35:38
env: qa
Archiver-Version: Plexus Archiver

4. 配置API访问编译结果并输出

@Controller
public class VersionController {
@Resource
private ServletContext context; @ResponseBody
@RequestMapping(value = "/version", method = RequestMethod.GET)
@ApiOperation(value = "查看编译版本", response = Map.class, httpMethod = "GET", notes = "查看编译版本")
public Map<String, String> version(HttpServletRequest request) throws IOException {
Map<String, String> map = new HashMap<String, String>();
MfMap mfMap = Manifests.DEFAULT.append(new ServletMfs(context));
map.put("project-version", mfMap.get("project-version"));
map.put("env", mfMap.get("env"));
map.put("built-at", mfMap.get("built-at"));
return map;
}
}

5. 打成war包启动结果如下:

{"project-version":"develop-SNAPSHOT","built-at":"2015-07-02 13:35:38","env":"qa"}

参考资料: http://manifests.jcabi.com/

  • 方法二:使用maven生成变量

1. 在pom.xml文件中配置

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
<timestamp>${maven.build.timestamp}</timestamp>
</properties>

2. 在properties文件中配置

project.version=${project.version}
project.env=${env}
project.built.time=${timestamp}

3. 配置API访问编译结果并输出

@Controller
public class VersionController {
@Value("${project.version}")
private String version;
@Value("${project.env}")
private String env;
@Value("${project.built.time}")
private String builtAt; @ResponseBody
@RequestMapping(value = "version", method = GET)
@ApiOperation(value = "查看版本信息")
public Map<String, String> version() {
Map<String, String> map = new HashMap<String, String>();
map.put("project-version", version);
map.put("env", env);
map.put("built-at", builtAt);
return map;
} }

参考资料: http://stackoverflow.com/questions/13228472/how-to-acces-maven-build-timestamp-for-resource-filtering

API查看Web App发布版本+编译时间+环境变量的更多相关文章

  1. 如何在cmd命令行中查看、修改、删除与添加环境变量,语法格式例子:set path;echo %APPDATA%

    如何在cmd命令行中查看.修改.删除与添加环境变量 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修 ...

  2. windows10系统修改JDK版本后配置环境变量不生效怎么办

    之前安装了个jdk8版本,今天突然想安装个更新版本的jdk11来用,但在安装好JDK11并配置环境变量后发现修改JDK版本后配置的环境变量不生效的.本文就给大家分享一下windows10系统修改JDK ...

  3. java运行机制、Jdk版本及Java环境变量

    一.语言特性 计算机高级语言按程序的执行方式可分为:编译型和解释型两种.编译型的语言是指使用专门的编译器,针对特定的平台(操作系统)一次性翻译成被该平台硬件执行的机器码,并包装成该平台可执行性程序文件 ...

  4. linux查看java jdk安装路径和设置环境变量

    一:查看类型 windows: set java_home:查看JDK安装路径 java -version:查看JDK版本 linux: whereis java which java (java执行 ...

  5. Windows 如何在cmd命令行中查看、修改、删除与添加环境变量

    转自:http://www.cnblogs.com/saptechnique/archive/2013/02/17/2914222.html 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对 ...

  6. appium---【已解决】【Mac】如何查看java的安装路径及JAVA_HOME环境变量的配置

    报错截图:根据提示可以看出,JAVA_HOME的环境变量配置错误,需要重新配置. 1.查看Java版本 打开mac电脑,查看java版本,打开终端Terminal,通过命令查看java的版本 Luck ...

  7. Windows的命令行查看,修改,删除,添加环境变量

    查看当前所有可用的环境变量:输入 set 即可查看. 显示某环境变量: 例如:echo %SystemDrive% 类似linux下面的echo $PATH这种用法. 首先明确一点:所有的在cmd命令 ...

  8. 周一01.3Python多版本共存&pip环境变量设置

    python多版本共存 1.分别安装Python2.7(手动添加环境变量)与Python3.6 2.分别进入Py2与Py3文件夹中,复制python.exe,重命名为python2.exe和pytho ...

  9. windows下 两个版本的JDK环境变量进行切换 MARK

    我们平时在window上做开发的时候,可能需要同时开发两个甚至多个项目,有时不同的项目对JDK的版本要求有区别,为了简化操作,我们可以通过批处理文件来完成环境变量切换的任务.使用方法:阅读代码我们就会 ...

随机推荐

  1. PDO操作数据库

  2. linux搭建LAMP

    先简要概述下本文要点:(操作系统采用CentOS6.5 x64) 1.分别安装搭建lamp服务环境: 2.采用lamp一键安装包搭建环境: 3.在lamp环境中初步搭建起一个网站: 一. 分别安装搭建 ...

  3. Javascript学习笔记:闭包题解(3)

    代码: function assignHandler(){ var element=document.getElementById('someElementId'); element.onclick= ...

  4. Linux C++线程池

    .为什么需要线程池? 部分应用程序需要执行很多细小的任务,对于每个任务都创建一个线程来完成,任务完成后销毁线程,而这就会产生一个问题:当执行的任务所需要的时间T1小于等于创建线程时间T2和销毁线程时间 ...

  5. [MVC_Json序列化]Json字符串反序列化成C#对象

    上一篇中有Json序列化相关问题得到了解决. 那么结果集为Json串时,如何将Json串转成C#对象呢? 现举例说明: -现有如下字符串数据 string k = "{\"ring ...

  6. NTFS系统的ADS交换数据流

    VC++ 基于NTFS的数据流创建与检测 What are Alternate Streams?(交换数据流) NTFS alternate streams , 或者叫streams,或者叫ADS(w ...

  7. What is SSL and what are Certificates?

    Refer to http://www.tldp.org/HOWTO/SSL-Certificates-HOWTO/x64.html The content 1.2. What is SSL and ...

  8. java父类与接口有相同的方法

    这是java多态的一个体现,如果一个类classA继承了类classB,有实现了接口interfaceA,并且接口中有方法funA(),且父类classB中也有funA(),那么对于classA来说既 ...

  9. test 2016-12-6

    //$token = drupal_get_token('abc'); //dpm(drupal_valid_token($token,'abc')); //1 //从任何字符串生成一个密码形式的字符 ...

  10. C# for循环 循环中先求长度还是使用list.Count,哪个效率高

    这种问法可能问的不好.应该说成是第一种方法完全没有必要,很多人可能以为那样会为代码带来效率,而实际上是不会给效率带来任何提升. 因为事实上,索引器内部,为了安全期间,还是会去求整个list的count ...