gpt4 book ai didi

java - 如何像在 Pom 中一样从 Java 方法获取 Maven 项目版本

转载 作者:行者123 更新时间:2023-11-30 07:19:14 33 4
gpt4 key购买 nike

我可以从我的 pom 文件中获取一些变量的值,即:

${project.version}

我正在开发一个自定义的 Maven 插件,我可以用表达式设置它,但我不想要它。我怎样才能像我的 pom 文件一样在 Java 方法中获取它?

PS: System.getProperty("project.version") 不起作用,我应该找到一个通用的解决方案,因为我也会在其他事情上使用它,即获取 bamboo 内部版本号等。

最佳答案

我在我的 Web 项目中通过使用 maven-war-plugin 将版本注入(inject)到 list 中,然后使用一些 Java 代码从那里获取它。我看不出为什么不能用非 Web 项目完成类似的事情。

例如

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
version>2.4</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>

然后在 Java 中(不包括错误处理):

public String getMavenVersion(ServletContext ctx) {
String appServerHome = ctx.getRealPath("/");
File manifestFile = new File(appServerHome, "META-INF/MANIFEST.MF");

Manifest mf = new Manifest();

mf.read(new FileInputStream(manifestFile));

Attributes atts = mf.getMainAttributes();

return atts.getValue("Implementation-Build");
}

关于java - 如何像在 Pom 中一样从 Java 方法获取 Maven 项目版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14760638/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com