从POM获取应用程序版本

bcs8qyzn  于 2022-09-20  发布在  Maven
关注(0)|答案(4)|浏览(179)

我有一个REST端点,用于返回有关应用程序的信息(到目前为止只有应用程序版本),但到目前为止,这些信息是硬编码的,很容易忘记更改它。我会更好地从POM或清单文件检索应用程序版本。有没有什么项目能带来这样的功能?

vhmi4jdf

vhmi4jdf1#

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


# application.properties

endpoints.info.enabled=true
info.app.version=@project.version@

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

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

另请参阅:spring boot/spring web app embedded version number

dba5bblo

dba5bblo2#

您最好使用内置清单。

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>
wixjitnu

wixjitnu3#

有一个很棒的项目叫Appinfo,请使用它并享受!(我知道它的页面很难看,但它很管用:)
AppInfo允许自动向您的应用程序提供当前版本号、构建日期或内部版本号。

此外,卓越的Spring Boot Actuator提供了名为Info Endpoint的功能,可以将版本信息发布到Web或REST。

默认情况下,Actuator会将/INFO端点添加到主服务器。它包含来自git.properties(如果该文件存在)的提交和时间戳信息,以及它在环境中找到的前缀为“INFO”的任何属性。

egdjgwm8

egdjgwm84#

您可以使用maven的resource filtering或类似maven-substitute-plugin的东西。

相关问题