Java 从pom获取应用程序版本

Java 从pom获取应用程序版本,java,spring,maven,versioning,Java,Spring,Maven,Versioning,我有一个rest端点用于返回有关应用程序的信息(到目前为止只有应用程序版本) 但到目前为止,这些信息是硬编码的,很容易忘记更改。 我会更好地从pom或清单文件检索应用程序版本。有没有任何项目能带来这样的功能?有一个令人惊叹的项目命名为,请使用它并享受它!(我知道它有一个难看的页面,但它是有效的:) AppInfo允许自动向应用程序提供当前版本号、生成日期或生成号 此外,还提供了名为的功能,可以将版本信息发布到web或REST 默认情况下,执行器将/info端点添加到主服务器。它包含git.pr

我有一个rest端点用于返回有关应用程序的信息(到目前为止只有应用程序版本) 但到目前为止,这些信息是硬编码的,很容易忘记更改。
我会更好地从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>"}}