一尘不染

在运行时获取Maven工件版本

java

我注意到在Maven工件的JAR中,project.version属性包含在两个文件中:

META-INF/maven/${groupId}/${artifactId}/pom.properties
META-INF/maven/${groupId}/${artifactId}/pom.xml

是否有建议的方式在运行时读取此版本?


阅读 335

收藏
2020-03-23

共1个答案

一尘不染

你无需访问特定于Maven的文件即可获取任何给定库/类的版本信息。

你可以简单地使用getClass().getPackage().getImplementationVersion()来获取存储在.jar-files中的版本信息MANIFEST.MF。幸运的是,Maven足够聪明,不幸的是,默认情况下,Maven也不将正确的信息写入清单!

相反,必须修改的设置<archive>元素maven-jar-pluginto set addDefaultImplementationEntriesaddDefaultSpecificationEntriesto true,如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>                   
            <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
            </manifest>
        </archive>
    </configuration>
</plugin>

理想情况下,应将此配置放入公司pom或其他基本pom中。

<archive>元素的详细文档可以在Maven存档文档中找到。

2020-03-23