How to put maven project version in war file manifest?

前端 未结 3 1644
旧时难觅i
旧时难觅i 2021-02-02 10:29

I need to have Maven insert the version number from the POM file into the manifest located in the WAR file under /WEB-INF/manifest.mf.

How do I do this? I was able to ea

相关标签:
3条回答
  • 2021-02-02 10:56

    Figured it out using the maven-war-plugin. See the configuration below:

    <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>
    
    0 讨论(0)
  • 2021-02-02 10:58

    Or you can use the addDefaultImplementationEntries or addDefaultSpecificationEntries flags which will add several entries including the project.version property.

    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}
    

    Default value for both is false. If a property is not defined (e.g. project.organization.name), then that line will be excluded from the manifest.

    This could go into the maven-war-plugin configuration as follows:

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <archive>
                <manifest>
                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                </manifest>
            </archive>
        </configuration>
    </plugin>
    
    0 讨论(0)
  • 2021-02-02 11:00

    Put ${project.version} in your manifest.mf where you want the version to be. In order for this to work, I believe you need the resources plugin so that manven will 'filter' resources as they are included in your war file.

    0 讨论(0)
提交回复
热议问题