Java 从pom获取应用程序版本
我有一个rest端点用于返回有关应用程序的信息(到目前为止只有应用程序版本) 但到目前为止,这些信息是硬编码的,很容易忘记更改。Java 从pom获取应用程序版本,java,spring,maven,versioning,Java,Spring,Maven,Versioning,我有一个rest端点用于返回有关应用程序的信息(到目前为止只有应用程序版本) 但到目前为止,这些信息是硬编码的,很容易忘记更改。 我会更好地从pom或清单文件检索应用程序版本。有没有任何项目能带来这样的功能?有一个令人惊叹的项目命名为,请使用它并享受它!(我知道它有一个难看的页面,但它是有效的:) AppInfo允许自动向应用程序提供当前版本号、生成日期或生成号 此外,还提供了名为的功能,可以将版本信息发布到web或REST 默认情况下,执行器将/info端点添加到主服务器。它包含git.pr
我会更好地从pom或清单文件检索应用程序版本。有没有任何项目能带来这样的功能?有一个令人惊叹的项目命名为,请使用它并享受它!(我知道它有一个难看的页面,但它是有效的:) AppInfo允许自动向应用程序提供当前版本号、生成日期或生成号
此外,还提供了名为的功能,可以将版本信息发布到web或REST 默认情况下,执行器将/info端点添加到主服务器。它包含git.properties(如果该文件存在)中的提交和时间戳信息,以及它在带有前缀“info”的环境中找到的任何属性
您可以使用maven或类似于
maven替代插件的插件
您最好使用内置清单
new Manifest(Application.class.getResourceAsStream("/META-INF/manifest.mf"))
对于具体的impl版本:
new Manifest(Application.class.getResourceAsStream("/META-INF/manifest.mf"))
.getMainAttributes()
.get(Attributes.Name.IMPLEMENTATION_VERSION)
使用maven不要忘记使用以下方法创建清单:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
org.apache.maven.plugins
maven jar插件
2.4
真的
Spring Boot可以引用pom.xml中定义的项目版本,并通过REST使用以下内容将其公开:
然后访问/info URL(例如)将返回:
{"app": {"version": "<major.minor.incremental>"}}
{“app”:{“version”:“}
另请参见:您的意思是说版本的构建吗?如果是,那么只需在POM中添加1.0.0即可。我想他的意思是,他如何在运行时读取该版本。。。是的,我想从pom中读取当前版本(标记的值),并在java代码中使用它。我想用一种简单而优雅的方式来实现这一点,看看吧。是的,但是如何将过滤与REST集成呢?:)当使用Maven构建项目时,请求的版本信息将进入某个文件(同样,它是以某种方式“硬编码”的,但在构建项目之前由Maven的资源预处理器设置的),如属性文件或直接在Java类中。。。应用程序可以使用此信息,然后在REST请求时返回它。我遗漏了什么吗?这是真的,但是有一些工具可以更容易地做到这一点。好吧,听起来“手动”做这件事并不难。但听起来很有趣。谢谢你的提示。这不适用于我的Spring启动应用程序。该清单已找到,但属于我项目的一个LIB成员。我一直在寻找解决方案。谢谢,很好用!
{"app": {"version": "<major.minor.incremental>"}}