如何将maven项目版本放在war文件清单中?
我需要让Maven将POM文件的版本号插入位于/WEB-INF/manifest.mf下的WAR文件中的清单。如何将maven项目版本放在war文件清单中?
我该怎么做?我能够使用maven-jar-plugin轻松地在JAR文件中为此进行文件归档,但这不适用于WAR文件。
感谢您的帮助!
使用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>
将${project.version}
放在您的manifest.mf中您希望版本的位置。为了达到这个目的,我相信你需要资源插件,以便manven能够“过滤”包含在war文件中的资源。
但清单文件不是资源。它在构建时生成,对吗?如果在构建时生成,则不会将其作为资源进行处理。我误解了什么? – 2011-04-25 17:54:46
@Matthew它可以是一个资源,但它是一个不正确的方法。你是对的,这个文件是由maven-war-plugin实时生成的。你的回答是正确的。 – yegor256 2011-04-26 17:11:23
或者你可以使用addDefaultImplementationEntries或addDefaultSpecificationEntries标志,这将增加几个条目,包括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
),那么该行将被从清单中排除。
这可能进入Maven的战争插件配置如下:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
如果您也有兴趣通过网址阅读这些版本信息,例如'http:// example.com/versioninfo.txt',您可以过滤'versioninfo.txt'模板,其中包含您的'$ {project .version}和[将版本文件包含在war中](http://www.taringamberini.com/en/howto/java/2015/including-release-info-into-war/)通过使用'maven -war-plugin'。 – taringamberini 2015-09-25 07:37:17