Как поместить версию проекта maven в манифест файла войны?
Мне нужно, чтобы Maven вставлял номер версии из файла POM в манифест, расположенный в файле WAR в /WEB -INF/manifest.mf.
Как мне это сделать? Я смог легко загрузить документацию для этого в JAR файле, используя maven-jar-plugin, но это не работает в WAR файле.
Спасибо за помощь!
Ответы
Ответ 1
Подумал об этом, используя плагин maven-war. См. Конфигурацию ниже:
<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>
Ответ 2
Или вы можете использовать флаги 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}
Значение по умолчанию для обоих значений равно false. Если свойство не определено (например, 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>
Ответ 3
Поместите ${project.version}
в ваш manifest.mf, где вы хотите, чтобы была версия. Чтобы это работало, я считаю, что вам нужен плагин ресурсов, чтобы manven "отфильтровал" ресурсы, поскольку они включены в ваш файл войны.