gpt4 book ai didi

java - 从 pom.xml 获取项目版本

转载 作者:行者123 更新时间:2023-11-30 02:07:31 26 4
gpt4 key购买 nike

我有这个pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>es.ja.xxx.yyy.aaa</groupId>
<artifactId>name-parent</artifactId>
<version>1.0.1.2-SNAPSHOT</version>
</parent>
</project>

我需要从 Java 代码中获取 pom.xml 的版本。

最佳答案

我会向后解释:

  1. 在 Facelet 中显示值(OP 未请求)
  2. 提供值的托管 Bean
  3. pom.xml 创建manifest.mf

那么让我们开始显示修订号:

<h:outputText value="#{appInfo.revision}" />

结果如下所示,其中0.0.40是poms项目版本中的版本:

0.0.40 / 29.05.2018 12:42

正如您所看到的(如下所示),结果显示了修订版和构建日期。请耐心等待,以下代码使用 version 作为构建日期。

appInfo 是一个 ApplicationScoped bean,从 list 中获取版本/修订信息。以下是 bean 的相关部分:

@Named
@ApplicationScoped
public class AppInfo {

private String revision; // + getter

@PostConstruct
public void init() {

InputStream is = FacesContext.getCurrentInstance().getExternalContext()
.getResourceAsStream("/META-INF/MANIFEST.MF");
Manifest manifest = new Manifest();
try {
manifest.read(is);
} catch (IOException e) {
// error handling
} finally {
try {
is.close();
} catch (IOException e) {
// error handling
}
}
Attributes attr = manifest.getMainAttributes();
String implRevision = attr.getValue("Implementation-Build");
String implVersion = attr.getValue("Implementation-Version");

if (implRevision == null || implVersion == null)
this.revision = "unknown";
else
this.revision = implVersion + " / " + implRevision;
}
}

构建号由 maven 构建号插件 ( http://www.mojohaus.org/buildnumber-maven-plugin/ ) 从 pom.xml 获取, list 由 maven war 插件生成。

在 pom 的构建部分中,您

  1. 将修订信息放入变量(称为 ${buildNumber})
  2. 使用此值生成 list

来自 pom.xml 的片段:

 <project>
<build>
<plugins>

<!-- revision number to ${buildNumber} -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<format>{0,date,dd.MM.yyyy HH:mm}</format>
<items>
<item>timestamp</item>
</items>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
</configuration>
</plugin>
<!-- END: revision number to ${buildNumber} -->

<!-- START: generate MANIFEST.MF -->
<plugin>
<artifactId>maven-war-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<version>2.5</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<version>${project.version}</version>
<Implementation-Build>${buildNumber}</Implementation-Build>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!-- END: generate MANIFEST.MF -->

</plugins>
</build>
</project>

因为我不久前创建了这个,所以某些部分可能(有点)过时,但它们仍然工作正常。

关于java - 从 pom.xml 获取项目版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50982046/

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