【问题标题】:How to put maven project version in war file manifest?如何将maven项目版本放入war文件清单中?
【发布时间】:2011-08-12 10:23:11
【问题描述】:

我需要让 Maven 将 POM 文件中的版本号插入到位于 /WEB-INF/manifest.mf 下的 WAR 文件中的清单中。

我该怎么做?我可以使用 maven-jar-plugin 在 JAR 文件中轻松归档执行此操作的文档,但这不适用于 WAR 文件。

感谢您的帮助!

【问题讨论】:

    标签: java maven-2 maven maven-plugin


    【解决方案1】:

    ${project.version} 放入 manifest.mf 中您希望版本所在的位置。为了使其工作,我相信您需要资源插件,以便 manven 将“过滤”资源,因为它们包含在您的 war 文件中。

    【讨论】:

    • 但是清单文件不是资源。它是在构建时生成的,对吗?如果它是在构建时生成的,那么它不会被作为资源处理。我是不是误会了什么?
    • @Matthew 它可以是一种资源,但这是一种不正确的方法。没错,该文件是由 maven-war-plugin 即时生成的。你下面的答案是正确的。
    【解决方案2】:

    使用 maven-war-plugin 解决了这个问题。看下面的配置:

    <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-war-plugin</artifactId>
         <version>2.1.1</version>
         <configuration>
             <archive>
                 <manifestEntries>
                     <version>${project.version}</version>
                 </manifestEntries>
             </archive>
         </configuration>
    </plugin>
    

    【讨论】:

    • 如果您也有兴趣通过 Web URL 阅读此类版本信息,例如 http://example.com/versioninfo.txt,您可以过滤一个 versioninfo.txt 模板,其中包含 your${project.version}include the version file into the war by使用maven-war-plugin
    【解决方案3】:

    或者您可以使用 addDefaultImplementationEntriesaddDefaultSpecificationEntries 标志添加多个条目,包括 project.version 属性。

    addDefaultImplementationEntries

    Implementation-Title: ${project.name}
    Implementation-Version: ${project.version}
    Implementation-Vendor-Id: ${project.groupId}
    Implementation-Vendor: ${project.organization.name}
    Implementation-URL: ${project.url}
    

    addDefaultSpecificationEntries

    Specification-Title: ${project.name}
    Specification-Version: ${project.version}
    Specification-Vendor: ${project.organization.name}
    

    两者的默认值都是假的。如果未定义属性(例如 project.organization.name),则该行将从清单中排除。

    这可以进入 ma​​ven-war-plugin 配置,如下所示:

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <archive>
                <manifest>
                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                </manifest>
            </archive>
        </configuration>
    </plugin>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多