开发者

How to put maven project version in war file manifest?

开发者 https://www.devze.com 2023-02-28 08:50 出处:网络
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.

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 easily file documentation for doing this in a JAR file using the maven-jar-plugin, but that does not work on a WAR file.

Thanks for the help!


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>


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>


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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号