打包maven项目时,它将自动在其中生成pom.properties文件,其中将包含版本,artifactId和groupId信息。 这些在运行时很方便拥有并显示给您的Web应用程序。 可以使用如下方法检索它。

public class Application {private String version;public String getVersion() {if (version == null) {String res = "META-INF/maven/myapp/pom.properties";URL url = Thread.currentThread().getContextClassLoader().getResource(res);if (url == null) {version = "SNAPSHOT." + Utils.timestamp();} else {Properties props = Utils.loadProperties(res);version = props.getProperty("version");}}return version;}
}

听起来不错? 不太快! 原来,您需要做更多的技巧才能使其正常运行以进行部署。 默认情况下,maven war插件会将您的类文件打包到WEB-INF / classs中,但pom.properties在同一级别的META-INF中,而不在WEB-INF / classes / META-INF中! 这导致上面的代码无法从类路径中找到您的资源pom.properties!

要解决此问题,您需要将以下内容添加到pom.xml文件中:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><archiveClasses>true</archiveClasses></configuration></plugin>

这将告诉maven将类和pom.properties打包到一个单独的文件中,然后将其放在WEB-INF / lib文件夹中,而不是使用解压缩的WEB-INF / classes版本。 这将强制由我们的getVersion()方法正确添加和读取pom.properties。

翻译自: https://www.javacodegeeks.com/2015/05/getting-version-string-from-a-maven-based-web-application.html

从基于Maven的Web应用程序获取版本字符串相关推荐

  1. maven 常量字符串过长_从基于Maven的Web应用程序获取版本字符串

    maven 常量字符串过长 打包maven项目时,它将自动在其中生成pom.properties文件,其中将包含版本,artifactId和groupId信息. 这些在运行时很方便拥有并显示给您的We ...

  2. 一个非常轻巧的基于Groovy的Web应用程序项目模板

    一个非常轻巧的基于Groovy的Web应用程序项目模板 您可能听说过该项目Grails是Ruby on Rails之类的Groovy版本的框架,该框架使您可以通过动态脚本轻松地创建Web应用程序. 尽 ...

  3. groovy 模板_一个非常轻巧的基于Groovy的Web应用程序项目模板

    groovy 模板 一个非常轻巧的基于Groovy的Web应用程序项目模板 您可能听说过该项目Grails是Ruby on Rails之类的Groovy版本的框架,该框架使您可以通过动态脚本更轻松地创 ...

  4. spring_在基于Spring的Web应用程序中使用Http Session

    spring 在基于Spring的Web应用程序中拥有和使用Http会话有多种方法. 这是基于最近项目经验的总结. 方法1 只需在需要的HttpSession中注入即可. @Service publi ...

  5. 在Autodesk应用程序商店发布基于浏览器的Web应用程序

    你一定已经听说过Autodesk应用程序商店了,通过Autodesk应用程序商店,你可以免费下载或购买来自全球的优秀开发者发布的应用程序,来帮助你更快更方便的完成你的工作.而且作为开发者,您也可以在A ...

  6. 掌握 Ajax,第 6 部分: 建立基于 DOM 的 Web 应用程序

    在不刷新页面的情况下使用 DOM 改变网页界面 文档选项 将此页作为电子邮件发送 未显示需要 JavaScript 的文档选项 样例代码 级别: 中级 Brett McLaughlin (mailto ...

  7. SVN基于Maven的Web项目更新,本地过程详细解释

    周围环境 MyEclipse:10.7 Maven:3.1.1 概要 最近在做项目,MyEclipse下载SVN基于上述Maven的Web问题,有时候搞了非常半天,Maven项目还是出现叉号,最后总结 ...

  8. 在基于Spring的Web应用程序中使用Http Session

    在基于Spring的Web应用程序中拥有和使用Http会话有多种方法. 这是基于最近项目经验的总结. 方法1 只需在需要的HttpSession中注入即可. @Service public class ...

  9. 一个基于J2EE的web应用程序运行起来需要什么?

    2019独角兽企业重金招聘Python工程师标准>>> Eclipse ?IDEA?这是目前市面上最常用的开发工具啦,我的理解是这些只是开发工具,是为了方便开发的,而不是web应用程 ...

最新文章

  1. 《Java入门经典(第7版)》—— 6.11 练习
  2. python struct笔记
  3. AdaBoost人脸检测原理
  4. SecureCRT使用
  5. 安装配置好openstack环境的虚拟机,须要改动ip时,在数据库中同步改动ip的方法...
  6. Zookeeper和分布式环境中的假死脑裂问题(转)
  7. CF1385E Directing Edges 拓扑序
  8. 集群的可扩展性及其分布式体系结构(2)-下
  9. java 多线程基础(一)
  10. mysql acid介绍_InnoDB ACID模型介绍
  11. python安装详细步骤mac_Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
  12. 理解C/C++运行时库
  13. 小程序获取百度地图api
  14. 朋友圈点赞截图在线生成源码
  15. linux洪水攻击路由器,(20)Linux下ICMP洪水攻击实例
  16. 【PHPWord】如何解决PHPWord的输出checkbox复选框并设置checked已勾选
  17. PPC修改注册表大全 (注册表必看)(转载)
  18. PHP面向对象基础七
  19. php更改后缀名,修改网页后缀名
  20. Linux下c++/c使用getsockopt()的记录

热门文章

  1. SpringSecurity认证
  2. 考研英语二大纲22年考研
  3. HBase体系架构说明
  4. android 监听安装来源_Flutter插件开发之APK自动安装
  5. MyBatis-Plus EntityWrapper的使用 wrapper le ge
  6. 道指mt4代码_剑指offer算法题052:正则表达式匹配
  7. jdbc java_Java中使用JDBC
  8. Object.hashCode()与Object.equals()
  9. 本地方法(JNI)——从java 程序中调用C函数
  10. javadoc提取工具_使JavaDoc保持最新状态的工具