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

打包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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【APICloud系列|31】成功上架5个应用商店总结(腾讯应用宝、阿里应用分发平台、华为开发者联盟、小米开放平台、百度开放平台)

应用商店的选择: 腾讯应用宝:http://open.qq.com/阿里应用商店(淘宝手机助手,UC应用商店,豌豆荚):http://open.uc.cn/百度手机助手:http://app.baidu.com/华为应用市场:http://developer.huawei.com/devunion/ui/devplan.html小米应用商店:http://dev.xiaomi.com/con…

PSPO表格

一、项目计划总结&#xff1a; 周活动总结表 日期 任务 听课 编写程序 阅读课本 准备考试 日总计 周日 周一 周二 300 100 30 430 周三 100 50 30 180 周四 200 80 …

html并行加载,html – 浏览器中的最大并行HTTP连接数?

我创建一些挂起的连接到http服务器(彗星&#xff0c;反向ajax等)。它工作确定&#xff0c;但我看到浏览器只允许同时给定域的两个挂起的连接。因此&#xff0c;如果用户在他们的浏览器的Tab1中查看我的网络应用程序&#xff0c;也尝试在Tab2中加载它&#xff0c;他们已经用尽了…

阿里云ECS服务器连接不上3306端口?

连不上3306端口一般有三种情况。 1 .本机上防火墙没有开放3306端口,需要自己配置入站规则,或者关闭本机防火墙。 2 .linux 服务器上的 iptables 防火墙没有开放3306端口, 或者关闭服务器上的防火墙。 打开 /etc/sysconfig/iptables 在 "-A INPUT –m state --sta…

UGUI 锚点

今天我们来学习下UGUI的锚点, 他是做什么的呢&#xff1f; 基本上就是用于界面布局. 1. 1个控件对应1个描点. 2. 描点分成四个小叶片, 每1个叶片 对应 控件四边框的角点 3. 不管屏幕如何放大缩小, 控件四边点与 每一个叶片对应的四边点距离不变.(换句话说,按钮的中心与描点的…

语文课外运用计算机探究,[小学语文]计算机在小学写字教学中的运用之我见

[小学语文]计算机在小学写字教学中的运用之我见随着经济的快速发展&#xff0c;教育也出现了加快发展、加快改革的势态。随着教育技术的不断增加&#xff0c;教学设备得以不断更新&#xff0c;教学手段变得更加现代化。特别是我们火星小学&#xff0c;计算机辅助教学已成为学校…

『OPEN3D』1.7 点云拟合问题

本专栏地址&#xff1a;https://blog.csdn.net/qq_41366026/category_12186023.html?spm1001.2014.3001.5482 1、平面拟合 2、直线拟合 3、圆形拟合 4、球形拟合

glassfish_具有GlassFish和一致性的高性能JPA –第1部分

glassfish您以前听说过连贯性吗&#xff1f; 可能是。 它是那些著名的内存网格解决方案之一&#xff0c;这些解决方案承诺了出色的快速数据访问和无限空间用于您经常使用的数据。 其中一些众所周知的竞争对手是Infinispan &#xff0c; Memcached和Terracotta Ehcache 。 它们都…

推荐几个开发高薪技术产品(APP、网站、小程序)的原型设计工具

工欲善其事必先利其器。作为一名产品经理&#xff0c;如何才能快速地设计一款产品&#xff1f;一款优秀的产品原型工具必不可少。如何才能选择一款适合自己的原型工具呢&#xff1f;Benson特意整理了11款产品原型工具以供参考&#xff0c;并学习曲线&#xff0c;性价比&#xf…

狼群战术

狼群战术 Time Limit : 1000 MS Memory Limit : 65536 KB Description 二战中德军潜艇使用狼群战术使得盟军的运输线遭受重大的损失。盟军截获了德军潜艇的通信电报&#xff0c;但电报显然是加了密的&#xff0c;经过盟军解密人员和情报人员的努力&#xff0c;终于解密了德军…

计算机网络和通信,计算机网络与通信技术

spContent本课程以谢希仁老师的第七版《计算机网络》为教材&#xff0c;采用随堂录制和录音棚录制两种方式满足同学们学习的不同习惯&#xff0c;本次开课加入了三个可以线上完成的重要实验。通过本门课程的学习&#xff0c;系统地建立计算机网络通信的理论体系&#xff0c;掌握…

APP界面常用的五种颜色搭配

众所周知&#xff0c;每一种颜色带给用户的视觉感受也是不同的。现在人们对手机的依赖程度&#xff0c;就能看到手机中APP的发展前景&#xff0c;那今天就跟大家聊聊如何通过颜色搭配的不同来进行移动端APP界面的布局和排版设计。移动端UI界面中通常是需要选取主色&#xff0c;…

JavaOne 2015 –提交的技巧和建议

大家都知道JavaOne 。 感觉就像一直在那儿。 而且&#xff0c;即使我们跌宕起伏&#xff0c;而地理位置也不是我们想要的那样&#xff0c;旧金山也很昂贵&#xff0c;而且和。 这是有关各种Java的顶级会议。 今年又再次成为程序委员会&#xff08;“ Java&#xff0c;DevOps和云…

Oracle 数据库导入导出 dmp文件

首先询问对方数据库的表空间名称和大小&#xff0c;然后在你的oracle中建立相应表空间&#xff0c;最后使用命令导入、导出数据。补充&#xff1a;1.要新建一个数据库&#xff1b; Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可 以把数据从远程数据库服务…

计算机网络课程计划,计算机网络教学计划2017

计算机网络教学计划2017教学计划(课程计划)是课程设置的整体规划&#xff0c;它规定不同课程类型相互结构的方式&#xff0c;也规定了不同课程在管理学习方式的要求及其所占比例。下面是小编整理的计算机网络教学计划范文&#xff0c;希望对你有帮助!计算机网络教学计划(一)一、…

hdu 4267 多维树状数组

题意&#xff1a;有一个序列 "1 a b k c" means adding c to each of Ai which satisfies a < i < b and (i - a) % k 0. (1 < a < b < N, 1 < k < 10, -1,000 < c < 1,000)"2 a" means querying the value of Aa. (1 < a …

微信服务商开发能力说明文档

最近看到很多人复制我的这篇文章,我也是醉了,你起码搞个转载,注明出处, 然后设置付费文档,发现也不好使,文章比较简短,别人也能免费看到我的文章全部内容, 无奈之下,再次打开这篇文章开始编辑, 前面增加一些废话, 看看有多少人复制我的文档,我都不想评论,找各…

html中scope的作用,AngularJS 作用域(Scope)

AngularJS 作用域(Scope)作用域(Scope)是一个存储应用数据模型的对象为 表达式 提供了一个执行上下文作用域的层级结构对应于 DOM 树结构作用域可以监听 表达式 的变化并传播事件作用域有什么作用域提供了 ($watch) 方法监听数据模型的变化作用域提供了 ($apply) 方法把不是由A…

跳转到企业缓存之前要考虑的事项

介绍 关系数据库事务是ACID &#xff0c;强大的一致性模型简化了应用程序开发。 由于启用Hibernate缓存是一项配置 &#xff0c;因此&#xff0c;只要数据访问层开始显示性能问题&#xff0c;就转向缓存非常吸引人。 添加缓存层确实可以提高应用程序性能&#xff0c;但是它有其…

去小公司了解哪些工具?

程序员开发需要具备良好的信息检索能力&#xff0c;为了备忘&#xff0c;将开发过程中常用的网站进行整理。 1、搜索引擎 1.1、秘迹搜索 一款无敌有良心、无敌安全的搜索引擎&#xff0c;不会收集私人信息&#xff0c;保护私隐&#xff0c;没有Cookie&#xff0c;并且秘迹搜索…