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

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

  • maven-компилятор-плагин
  • maven-ресурсы-плагин
  • maven-antrun-plugin
  • maven-surefire-плагин
  • maven-war-plugin

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

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

что-то типа:

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

спасибо,
Stijn

2 ответов


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

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

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

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


просто включите общие плагины в свой :

<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>