我注意到,在Maven工件的罐子中,项目.版本属性包含在两个文件中:

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

有没有推荐的在运行时阅读此版本的方法?

推荐答案

您不需要访问特定于Maven的文件来获取任何给定库/类的版本信息.

您只需使用getClass().getPackage().getImplementationVersion()即可获得存储在数据库中的版本信息.jar文件MANIFEST.MF幸运的是Maven足够聪明不幸的是,Maven在默认情况下也没有将正确的信息写入 list !

相反,必须将maven-jar-plugin<archive>配置元素修改为addDefaultImplementationEntries,将addDefaultSpecificationEntries设置为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 Archive documentation中找到.

Java相关问答推荐

Java应用程序RAC感知

如何使用Java API在Oracle ODI中运行模拟?

ittext pdf延迟签名,签名无效

取消按钮,但没有任何操作方法引发和异常

工件部署期间出错[Tomcat 8.5.45]

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

如何使用AWS CLI从S3存储桶中的所有对象中删除用户定义的元数据?

JavaFX Maven Assembly插件一直打包到错误的JDK版本

try 创建一个对象,使用它,然后使用一条语句将其存储为列表

内存中的H2修剪尾随空格

JavaFX如何在MeshView中修复多个立方体?

计算两个浮点数之间的距离是否对称?

什么是Java原子属性的正确getter和setter

与Spring Boot相关的实体未正确保存

Jolt变换JSON数组问题

在JDK 1.8源代码中,为什么使用A-B 0来确定哪个更大,而不是A B?

%This内置函数示例

为什么当我创建Robot对象时,JavaFX引发IlLegalStateException异常?

如果执行@BeForeEach#repository.save(),则测试中的UnitTest最终UUID会发生更改

如何通过用户ID向用户发送私信