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

Запуск плагина maven только в родительском

Я создал плагин 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 и по одному для каждого модуля). Тем не менее, я хочу только одного (от родительского пом). В моем родительском файле 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

4b9b3361

Ответ 1

Два способа:

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

    -N --non-recursive
    Не переписывайте в подпроекты

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

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

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

    (Источник)

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

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