Изменение упаковки на основе активного профиля в pom
У меня есть проект, который я компилирую с maven. У меня разные профили, объявленные в pom.xml.
Для некоторых из этих профилей я предпочитаю строить войну, а для других профилей предпочитаю банку. Я использую, чтобы вручную отредактировать файл pom.xml и изменить переменную упаковки на
<packaging>war</packaging>
или
<packaging>jar</packaging>
перед выполнением
$ mvn clean package -Pchosenprofile
Как я могу сообщить mvn об упаковке, соответствующей каждому профилю, поэтому мне не нужно редактировать pom.xml?
Ответы
Ответ 1
Если вы хотите использовать профиль, вы можете использовать что-то вроде:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
..
<packaging>${packaging.type}</packaging>
<profiles>
<profile>
<id>webapp</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<packaging.type>war</packaging.type>
</properties>
</profile>
<profile>
<id>batch</id>
<properties>
<packaging.type>jar</packaging.type>
</properties>
</profile>
</profiles>
</project>
Ответ 2
Вы просмотрели параметр конфигурации attachClasses военного плагина? Эта простая настройка позволила бы вам построить как войну, так и банку (по умолчанию с классификаторами "классы" ) в одном выполнении maven.
Ответ 3
Я не думаю, что вы можете.
Две альтернативы, о которых я могу думать:
- имеют два отдельных модуля для упаковки и называют один из них в зависимости от профиля
- У вас есть ваш модуль на войне и настройка жизненного цикла (включая/исключить шаги сборки) в зависимости от профиля для создания вашей банки или вашей войны.
Мне нравится второй подход лучше - сервер сборки, вероятно, будет создавать оба, и разработчик будет использовать соответствующие профили/настройки для пропуска нежелательного типа.