ИЗМЕНИТЬ: я полностью отредактировал свой первый ответ, теперь, когда я лучше понимаю ожидания OP.
Попробуйте Cargo, тонкую оболочку, которая позволяет вам управлять контейнерами Java EE стандартным способом em>.
На самом деле на веб-сайте 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 и развернуть на нем свои веб-приложения с помощью простого (для запуска из проекта, содержащего конфигурацию плагина Cargo):
$ mvn cargo:start
Я просто не уверен, что это может работать с родительским pom (интересно, может ли это привести к проблемам с циклическими зависимостями), и я не тестировал его. Но лично я бы поместил все это в помпону отдельного проекта, например в родственном проекте ваших веб-приложений, а не в родительском pom. Я не думаю, что это действительно большое дело, и это, ИМХО, лучшая установка, особенно если вы планируете использовать груз для интеграционное тестирование.
person
Pascal Thivent
schedule
12.03.2009