Изменение упаковки на основе активного профиля в пом - PullRequest
33 голосов
/ 23 ноября 2011

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

<packaging>war</packaging>

или

<packaging>jar</packaging>

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

$ mvn clean package -Pchosenprofile

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

Ответы [ 3 ]

97 голосов
/ 28 февраля 2013

Если вы хотите использовать профиль, вы можете использовать что-то вроде:

<?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>
4 голосов
/ 24 ноября 2011

Вы смотрели на настройку attachClasses конфигурации плагина войны? Этот простой параметр позволит вам создать и войну, и банку (по умолчанию с классификатором «классы») в одном выполнении maven.

1 голос
/ 23 ноября 2011

Не думаю, что ты можешь.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...