项目环境: JDK7+Maven3.04

项目架构:SpringMVC

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

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

  1. <dependency>
  2. <groupId>com.jcabi</groupId>
  3. <artifactId>jcabi-manifests</artifactId>
  4. <version>1.1</version>
  5. </dependency>

2. pom.xml配置

配置archive添加

built-at: 编译时间

env: 环境

project-version: 代码分支号

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-war-plugin</artifactId>
  4. <version>2.4</version>
  5. <executions>
  6. <execution>
  7. <id>artifact-package</id>
  8. <phase>package</phase>
  9. <goals>
  10. <goal>war</goal>
  11. </goals>
  12. <configuration>
  13. <archiveClasses>true</archiveClasses>
  14. <warSourceExcludes>WEB-INF/lib/servlet-*</warSourceExcludes>
  15. <archive>
  16. <manifestEntries>
  17. <built-at>${maven.build.timestamp}</built-at>
  18. <env>${env}</env>
  19. <project-version>${project.version}</project-version>
  20. </manifestEntries>
  21. </archive>
  22. </configuration>
  23. </execution>
  24. <execution>
  25. <id>local-package</id>
  26. <phase>package</phase>
  27. <goals>
  28. <goal>exploded</goal>
  29. </goals>
  30. <configuration>
  31. <primaryArtifact>false</primaryArtifact>
  32. <webappDirectory>${project.build.directory}/hiv-local</webappDirectory>
  33. <archiveClasses>true</archiveClasses>
  34. <warSourceExcludes>WEB-INF/lib/servlet-*</warSourceExcludes>
  35. <archive>
  36. <manifestEntries>
  37. <built-at>${maven.build.timestamp}</built-at>
  38. <env>${env}</env>
  39. <project-version>${project.version}</project-version>
  40. </manifestEntries>
  41. </archive>
  42. </configuration>
  43. </execution>
  44. </executions>
  45. </plugin>

3. 编译后结果如下

META-INF/MANIFEST.MF

  1. Manifest-Version: 1.0
  2. Built-By: dell
  3. Build-Jdk: 1.7.0_75
  4. project-version: develop-SNAPSHOT
  5. Created-By: Apache Maven 3.0.4
  6. built-at: 2015-07-02 13:35:38
  7. env: qa
  8. Archiver-Version: Plexus Archiver

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

  1. @Controller
  2. public class VersionController {
  3. @Resource
  4. private ServletContext context;
  5.  
  6. @ResponseBody
  7. @RequestMapping(value = "/version", method = RequestMethod.GET)
  8. @ApiOperation(value = "查看编译版本", response = Map.class, httpMethod = "GET", notes = "查看编译版本")
  9. public Map<String, String> version(HttpServletRequest request) throws IOException {
  10. Map<String, String> map = new HashMap<String, String>();
  11. MfMap mfMap = Manifests.DEFAULT.append(new ServletMfs(context));
  12. map.put("project-version", mfMap.get("project-version"));
  13. map.put("env", mfMap.get("env"));
  14. map.put("built-at", mfMap.get("built-at"));
  15. return map;
  16. }
  17. }

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

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

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

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

1. 在pom.xml文件中配置

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

2. 在properties文件中配置

  1. project.version=${project.version}
  2. project.env=${env}
  3. project.built.time=${timestamp}

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

  1. @Controller
  2. public class VersionController {
  3. @Value("${project.version}")
  4. private String version;
  5. @Value("${project.env}")
  6. private String env;
  7. @Value("${project.built.time}")
  8. private String builtAt;
  9.  
  10. @ResponseBody
  11. @RequestMapping(value = "version", method = GET)
  12. @ApiOperation(value = "查看版本信息")
  13. public Map<String, String> version() {
  14. Map<String, String> map = new HashMap<String, String>();
  15. map.put("project-version", version);
  16. map.put("env", env);
  17. map.put("built-at", builtAt);
  18. return map;
  19. }
  20.  
  21. }

参考资料: 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. Kerberos是怎么工作的?

    Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证. 采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证. 关键要素 ...

  2. JVM 内存管理机制

    1. 内存分配图:  两栈一区一堆一计数 方法区里面 包含了运行时常量 2. 对象创建过程: new A() 首先加载A的字节码. 分配内存,内存分配方式分两种,如果采用带压缩的垃圾回收策略,则采用“ ...

  3. PostGIS导入导出SHP文件常用命令

    SHP导入POSTGIS数据库 引用 直接导入数据库 shp2pgsql  -I -s 2437 -W GBK shop_point.shp public.ntable | psql -U postg ...

  4. PHP获取当前时间戳,当前时间、及解决时区问题

    一.获取当前时间戳 方法1:通过time函数 time(); 方法2:通过$_SERVER中的REQUEST_TIME元素 $_SERVER['REQUEST_TIME']; 方法3:通过strtot ...

  5. Git和.gitignore

    http://blog.csdn.net/cscmaker/article/details/8553980 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .giti ...

  6. TCP/IP协议学习(六) 链路层详解

    学习知识很简单,但坚持不懈却又是如此的困难,即使一直对自己说"努力,不能停下"的我也慢慢懈怠了... 闲话不多说,本篇将讲述TCP/IP协议栈的链路层.在本系列第一篇我讲到,TCP ...

  7. php curl 采集

    curl 采集五个步骤: 1.curl_init()初始化curl 2.curl_setopt()设置传输数据和参数 3.curl_exec()执行传输并获取返回数据 4.curl_errono()返 ...

  8. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  9. Goppa code

    上面的公式定义了长度为n的Goppa码[1].n=2^m, 其维度 k≥n- t·m. 最小距离d≥ 2t+1. 存在运行时间与 n·t 成正比的快速译码算法. 从形式上看,右边是分式,相当于线性分组 ...

  10. easyui layout 布局title

    <script> function aclick(){ $("a").click(function () { var name=this.innerHTML; $($( ...