Maven: используйте общие / общие плагины при работе с несколькими профилями - PullRequest
10 голосов
/ 22 февраля 2010

У меня есть проект, который использует несколько профилей. Каждый профиль использует следующие плагины:

  • Maven-компилятор плагин
  • Maven-ресурсы-плагин
  • Maven-antrun-плагин
  • Maven-безошибочный-плагин
  • Maven войны-плагин

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

Вопрос теперь: есть ли способ включить эти распространенные плагины только один раз, но по-прежнему использовать их для всех профилей по умолчанию?

Что-то вроде:

<shared><plugin1><plugin2>...</shared>
<profile><plugin3></profile>
<profile><plugin3></profile>
...

спасибо,
Стейн

Ответы [ 2 ]

13 голосов
/ 22 февраля 2010

Если плагин используется всем профилем, просто определите его в <build> части:

<project>
...
    <build>
        <plugins>
             Your shared plugins go here...
        </plugins>

    <profiles>
        Definition of profiles...
    </profiles>
</project>

Таким образом, вы будете определять плагин antrun только в блоке profiles.

6 голосов
/ 22 февраля 2010

Просто включите общие плагины в ваш build раздел:

<build>
    <plugins>
        <plugin>
            <groupId>...</groupId>
            <artifactId>plugin1</artifactId>
        </plugin>
        ...
    </plugins>
</build>

Затем добавьте конкретный плагин в свой профиль:

<profiles>
    <profile>
        <id>...</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>...</groupId>
                    <artifactId>plugin3</artifactId>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

Вы также можете настроить один и тот же плагин по-разному в разных профилях следующим образом:

<profiles>
    <profile>
        <id>profile1</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>...</groupId>
                    <artifactId>plugin1</artifactId>
                    <configuration>
                        <setting>value1</setting>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <id>profile2</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>...</groupId>
                    <artifactId>plugin1</artifactId>
                    <configuration>
                        <setting>value2</setting>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...