如何获取 Java MANIFEST。MF 将包括 Maven 版本号

2022-09-02 10:19:08

我在项目的pom中有以下内容.xml我认为应该显示生成的WAR文件中使用的Maven版本:

<build>
...
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>false</addClasspath>
                    </manifest>
                    <manifestEntries>
                        <Build-Time>${maven.build.timestamp}</Build-Time>
                        <Build-Host>${agent.name}</Build-Host>
                        <Build-User>${user.name}</Build-User>
                        <Build-Maven>Maven ${maven.version}</Build-Maven>
                        <Build-Java>${java.version}</Build-Java>
                        <Build-OS>${os.name}</Build-OS>
                        <Build-Label>${project.version}</Build-Label>
                        <Build-Path>${basedir}</Build-Path>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
        ...
    </plugins>
...
</build>

清单。创建的MF看起来是正确的,除了Build-Maven行,在这种情况下,${maven.version}不会替换为实际的版本号3.0.4。

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: stocjon
Build-Jdk: 1.6.0_35
Build-Host: 
Build-Java: 1.6.0_35
Build-Label: 1.0.0-SNAPSHOT
Build-Maven: Maven ${maven.version}
Build-OS: Windows XP
Build-Path: C:\Development\project_name
Build-Time: 15:38:50 21-Sep-2012
Build-User: user_name

为什么Maven版本没有在MANIB中填充的任何想法。中频 ?

帮助将不胜感激。

谢谢乔恩


答案 1

您需要添加此插件:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals>
        <goal>maven-version</goal>
      </goals>
    </execution>
  </executions>
</plugin>

有关详细信息,请查看此处


答案 2

我们不再需要构建-帮助器-maven-插件,因为该功能(MSHARED-38)已于2012年2月添加到组件maven-archiver:2.5发行说明)。

这个组件被Maven插件使用,如maven-jar-pluginmaven-war-pluginmaven-ear-plugin等。

使用此功能的这些插件的版本是:

  • maven-jar-plugin : 2.4MJAR-148), 2012年2月发布
  • maven-war-plugin : 2.2MWAR-273), 2012年2月发布
  • maven-ear-plugin : 2.8MEAR-145),2012年9月发布
  • maven-assembly-plugin : 2.4MASSEMBLY-634),2012年11月发布
  • maven-ejb-plugin : 2.4MEJB-56), EDIT : 发布于 2014年8月24日
  • 等。

因此,现在,默认情况下,我们将在存档的 manifest.mf 中包含此条目:

Created-By: Apache Maven ${maven.version}


推荐