Запуск плагина 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
Ответы
Ответ 1
Два способа:
-
В командной строке выполните mvn hsqldb:startdb -N
-N
--non-recursive
Не переписывайте в подпроекты
(Источник) или
-
аннотируйте свой плагин с помощью @aggregator
Флаги этого Mojo, чтобы запустить его в мульти модульный способ, т.е. агрегировать сборку с набором проектов, перечисленных как модули.
(Источник)
Хотя это явно не сказано, это означает, что ваш плагин отвечает за создание дочерних модулей, то есть дочерние модули не будут созданы автоматически.
В любом случае, он будет только строить верхний проект и не спускаться в модули.
Я не знаю, что вы можете настроить это в pom.