为什么键没有与" WEB-INF / classes / META-INF / MANIFEST.MF"合并。使用maven-war-plugin?

时间:2014-12-10 16:32:54

标签: java maven java-ee jboss maven-war-plugin

我正在构建一个应用程序,然后在MANIFEST.MF文件中合并一些自定义键:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.5</version>
  <configuration>
    <archive>
      <manifestEntries>
        <Build-Time>${maven.build.timestamp}</Build-Time>
        <Build-Revision>${buildNumber}</Build-Revision>
      </manifestEntries>
    </archive>
  </configuration>
</plugin>

我有2个配置文件,生产配置文件使用以下资源配置:

<resources>
    <resource>
        <!-- "all" is used for all profiles, "development" and "production" -->
        <directory>src/main/resources/all</directory>
    </resource>
    <resource>
        <!-- "prod" is just used for "production" -->
        <directory>src/main/resources/prod</directory>
    </resource>
</resources>

默认的MANIFEST.MF位于src/main/resources/all/META-INF/MANIFEST.MF,应该用作基础。

我期待什么?

我希望MANIFEST.MF可以在myproject.war/WEB-INF/classes/META-INF/MANIFEST.MF使用&#34; Build-Time&#34;和#34; Build-Revision&#34;根据提供的值更新。然后我将能够在运行时访问MANIFEST.MF文件以检索&#34; Build-Revision&#34;密钥和句柄缓存。

会发生什么?

相反,MANIFEST.MF是在myproject.war/META-INF/MANIFEST.MF内创建的,其值已更新,并且在WEB-INF位置只有MANIFEST.MF的副本,而且没有更新任何密钥。< / p>

为什么WEB-INF / classes / META-INF / MANIFEST.MF没有通过maven-war-plugin更新?

1 个答案:

答案 0 :(得分:1)

(我想通了,这是我对maven如何处理src/main/resources和清单文件的无知

Maven在MANIFEST.MF内创建一个正确的META-INF/文件,并将其用作清单的默认约定路径,不需要在src/main/resources文件夹中创建另一个文件,默认应该在根目录中。

如果您从src/main/resources删除了MANIFEST(将被复制到WEB-INF/classes/META-INF/MANIFEST.MF),您将只有一个,并且可以使用以下命令从应用程序访问META-INF/MANIFEST.MF

request.getServletContext().getResourceAsStream( "/META-INF/MANIFEST.MF" );