編集:OPの期待をよりよく理解できるようになったので、最初の回答を完全に編集しました。
Java EE コンテナーを標準的な方法で操作できるシン・ラッパーであるCargoを調べてください。
実際、Cargo の Web サイトには、Cargo Maven2 プラグインを使用してコンテナーを自動的に開始/停止する方法を示すチュートリアルがあります (開始時にいくつかのデプロイ可能なものをデプロイする可能性があります)。了解した。
親ディレクトリからこれを実行できるかどうか、それが要件であるか、別のディレクトリから実行してもよいかどうかはわかりません。これについては後で説明します。まず、Cargo Maven2 プラグインのセットアップを見てみましょう。
あなたの場合、最小限の構成 (Cargo のデフォルト コンテナーである Jetty 5.x を使用する) から始めることができます。
[...]
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
</plugin>
</plugins>
</build>
[...]
Jetty 6.x を使用する場合は、要素に<containerId>
andを指定する必要があります。<type>
<container>
[...]
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<container>
<containerId>jetty6x</containerId>
<type>embedded</type>
</container>
</configuration>
</plugin>
[...]
次に、プラグイン構成内でデプロイ可能オブジェクトを明示的に定義して、デプロイするモジュールを追加します (構成の詳細については、 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 を起動し、簡単な方法で Web アプリケーションをデプロイできるようになります (cargo プラグイン構成を含むプロジェクトから実行するため):
$ mvn cargo:start
これが親pomで機能するかどうかはわかりません(これが循環依存の問題につながる可能性があるのではないかと思います)、テストしませんでした。しかし、個人的には、これらすべてを専用プロジェクトの pom に入れます。たとえば、親の pom ではなく、Web アプリケーションの兄弟プロジェクトに入れます。特に統合テストに cargo を使用する予定がある場合は、これがより良いセットアップだと思います。