Запуск плагина maven только в родительском - PullRequest
13 голосов
/ 18 мая 2011

Я создал плагин maven для запуска, очистки и остановки базы данных.Мой проект состоит из файла POM с 4 модулями:

<modules>
    <module>infrastructure</module>
    <module>domain</module>
    <module>application</module>
    <module>presentation</module>
</modules>

Плагин указан только в этом модуле, а не в модуле модулей.Когда я захожу в cmd, чтобы запустить базу данных с:

mvn hsqldb:startdb

Maven пытается создать базу данных для каждого файла pom.На самом деле запускается 5 баз данных (одна для родительского модуля и одна для каждого модуля).Тем не менее, я хочу только один (из родительского пом).В моем родительском файле pom плагин объявлен так:

<plugin>
    <groupId>sample.plugin</groupId>
    <artifactId>hsqldb-maven-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <inherited>false</inherited>
    <dependencies>
        <dependency>
            ...
        </dependency>
    </dependencies>
    <executions>
        ...
    </executions>
    <configuration>
        ...
    </configuration>
</plugin>

Какие-либо решения для моей проблемы?

С уважением,

Walle

1 Ответ

21 голосов
/ 18 мая 2011

Два способа:

  • В командной строке выполните mvn hsqldb:startdb -N

    -N --non-recursive
    Не участвовать в подпроектах

    ( Источник ) или

  • аннотируйте ваш плагин с помощью @aggregator

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

    ( Источник )

    Хотя об этом прямо не сказано, это означает, что ваш плагин отвечает за сборку дочерних модулей, т.е. дочерние модули не будут собираться автоматически.

В любом случае, он будет строить только верхний проект, а не спускаться в модули. Я не знаю, как это можно настроить в pom.

...