РЕДАКТИРОВАТЬ : я полностью отредактировал свой первый ответ, теперь я лучше понимаю ожидания ОП.
Извлеките Cargo , тонкую оболочку, которая позволяет вам манипулировать контейнерами Java EE стандартным способом .
На самом деле, на веб-сайте Cargo есть учебник , который демонстрирует, как использовать плагин Cargo Maven2 для автоматического запуска / остановки контейнера (возможно, развертывания в нем некоторых развертываемых объектов при его запуске), что и нужно Ищите из того, что я поняла.
Я просто не уверен, что это можно сделать из родительского каталога, и если это необходимо, или было бы нормально сделать это из другого каталога. Я вернусь к этому позже. Давайте сначала посмотрим на настройку плагина Cargo Maven2.
В вашем случае вы можете начать с минимальной конфигурации (которая использует Jetty 5.x, который является контейнером Cargo по умолчанию):
[...]
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
</plugin>
</plugins>
</build>
[...]
Если вы хотите использовать Jetty 6.x, вам нужно будет указать <containerId>
и <type>
в элементе <container>
:
[...]
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<container>
<containerId>jetty6x</containerId>
<type>embedded</type>
</container>
</configuration>
</plugin>
[...]
Затем добавьте модули, которые вы хотите развернуть, определив deployables явно в конфигурации плагина (подробные сведения о конфигурации см. В Справочном руководстве по плагину Maven2 ):
<deployables>
<deployable>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject-alpha</artifactId>
<type>war</type>
<properties>
<context>optional alpha root context</context>
</properties>
</deployable>
<deployable>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject-beta</artifactId>
<type>war</type>
<properties>
<context>optional beta root context</context>
</properties>
</deployable>
[...]
</deployables>
При этом вы сможете запустить Jetty и развернуть на нем свои веб-приложения с помощью простого (для запуска из проекта, содержащего конфигурацию грузового плагина):
$ mvn cargo:start
Я просто не уверен, что это может работать с родительским pom (интересно, может ли это привести к проблемам с циклическими зависимостями), и я не проверял это. Но лично я бы положил все эти вещи в отдельный проект, например в одноуровневом проекте ваших веб-приложений, а не в родительском пом. Я не думаю, что это действительно большое дело, и это IMHO лучше, особенно если вы планируете использовать груз для интеграционного тестирования .