18

私が管理している一連の Web アプリを Maven に移行しようとしています。

/pom.xml // 親 pom
 webapp1/pom.xml // 親を指すように設定
 webapp2/pom.xml // webapp1 のピアであり、親を指します。

それぞれの webapps は親 pom を参照しており、両方とも現在動作する jetty maven プラグインを持っています。

私の質問は、 mvn jetty:run が親ディレクトリで機能するように、親 pom から各 webapps をマウントするにはどうすればよいですか?

回答への編集: Pascal T 問題は、ルート pom からコマンドを実行しようとするとエラーが発生するほどではありませんが、構成方法がわかりません。

たとえば、webapp1/pom.xml は次のようになります。

<project>
...
<plugins>
  <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
  </plugin>
</plugins>
...
</project>

このディレクトリに移動して mvn jetty:run と入力すると問題なく動作し、http://localhost:8080/webapp1にアクセスできるようになります。

ただし、私が望むのは、webapp1 の親になり、親ディレクトリからすべての 'n' 個の webapps を実行することです。したがって、http://localhost:8080/webapp1http://localhost:8080/webapp2を 1 つのコマンド ライン パラメーターで使用できます。

ところで、答えにTomcatプラグインが含まれていれば、それで問題ありません。

4

1 に答える 1

10

編集: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 を使用する予定がある場合は、これがより良いセットアップだと思います。

于 2009-03-12T19:38:56.127 に答える