如何在运行 Tomcat 时获取软件包版本?
我尝试 getClass().getPackage().getImplementationVersion() 但这总是返回null
。
我猜这是因为我的战争尚未打包,而 Tomcat 执行了 .classes(又名爆炸战争)。META-INF\MANIFEST.MF
出现在最终战争中,但不在target\<project.name>\META-INF
folder
java.lang.Package
包对象包含有关实现的版本信息
以及 Java 包的规范。该版本控制信息是
由加载的 ClassLoader 实例检索并使其可用
班级。通常,它存储在清单中
随班级分发。
相关的是在运行时获取 Maven 工件版本
更新。在我已经添加了战争构建的配置之前。但是当从 Eclipse 运行 Tomcat 时,我得到null
.
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
<!-- this actually moves classes from \WEB-INF\classes to new jar
<archiveClasses>true</archiveClasses>
-->
</configuration>
</plugin>
解决了
1) 在 webapp 文件夹中创建 META-INF\MANIFEST.MFmvn war:manifest
2)编码
version = getClass().getPackage().getImplementationVersion();
if (version==null) {
Properties prop = new Properties();
try {
prop.load(getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF"));
version = prop.getProperty("Implementation-Version");
} catch (IOException e) {
logger.error(e.toString());
}
}
logger.info("Starting App version "+version);
感谢 @javadude 的回答如何读取在 apache tomcat 中运行的 Web 应用程序的清单文件?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)