【发布时间】:2011-08-12 10:23:11
【问题描述】:
我需要让 Maven 将 POM 文件中的版本号插入到位于 /WEB-INF/manifest.mf 下的 WAR 文件中的清单中。
我该怎么做?我可以使用 maven-jar-plugin 在 JAR 文件中轻松归档执行此操作的文档,但这不适用于 WAR 文件。
感谢您的帮助!
【问题讨论】:
标签: java maven-2 maven maven-plugin
我需要让 Maven 将 POM 文件中的版本号插入到位于 /WEB-INF/manifest.mf 下的 WAR 文件中的清单中。
我该怎么做?我可以使用 maven-jar-plugin 在 JAR 文件中轻松归档执行此操作的文档,但这不适用于 WAR 文件。
感谢您的帮助!
【问题讨论】:
标签: java maven-2 maven maven-plugin
将 ${project.version} 放入 manifest.mf 中您希望版本所在的位置。为了使其工作,我相信您需要资源插件,以便 manven 将“过滤”资源,因为它们包含在您的 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>
【讨论】:
http://example.com/versioninfo.txt,您可以过滤一个 versioninfo.txt 模板,其中包含 your${project.version} 和 include the version file into the war by使用maven-war-plugin。
或者您可以使用 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-war-plugin 配置,如下所示:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
【讨论】: