Подтвердить что ты не робот

Изменение упаковки на основе активного профиля в pom

У меня есть проект, который я компилирую с maven. У меня разные профили, объявленные в pom.xml. Для некоторых из этих профилей я предпочитаю строить войну, а для других профилей предпочитаю банку. Я использую, чтобы вручную отредактировать файл pom.xml и изменить переменную упаковки на

<packaging>war</packaging>

или

<packaging>jar</packaging>

перед выполнением

$ mvn clean package -Pchosenprofile

Как я могу сообщить mvn об упаковке, соответствующей каждому профилю, поэтому мне не нужно редактировать pom.xml?

4b9b3361

Ответ 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

Я не думаю, что вы можете.

Две альтернативы, о которых я могу думать:

  • имеют два отдельных модуля для упаковки и называют один из них в зависимости от профиля
  • У вас есть ваш модуль на войне и настройка жизненного цикла (включая/исключить шаги сборки) в зависимости от профиля для создания вашей банки или вашей войны.

Мне нравится второй подход лучше - сервер сборки, вероятно, будет создавать оба, и разработчик будет использовать соответствующие профили/настройки для пропуска нежелательного типа.