从 pom 获取应用程序版本

2022-09-03 09:24:16

我有一个用于返回有关应用程序的信息的休息终结点(到目前为止只有应用程序版本),但到目前为止,此信息是硬编码的,很容易忘记更改它。我将更好地从pom或清单文件中检索应用程序版本。是否有任何项目带来了这样的功能?


答案 1

Spring Boot可以引用pom.xml中定义的项目版本,并使用执行器通过REST公开它:

# application.properties
endpoints.info.enabled=true
info.app.version=@project.version@

然后访问 /info URL(例如 http://localhost:8080/info)将返回:

{"app": {"version": "<major.minor.incremental>"}}

另请参阅:弹簧启动/弹簧 Web 应用程序嵌入式版本号


答案 2

最好使用内置清单。

new Manifest(Application.class.getResourceAsStream("/META-INF/manifest.mf"))

对于具体版本:

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>

推荐