10

当社では、個別の戦争として構築された多数の異なるモジュールがあります。各クライアントは、購入したいモジュールを選択できます。すべてのモジュールが同じセッション、セキュリティ コンテキストなどを共有するため、それらを 1 つの war にマージすることは理にかなっています。

このプロセスを自動化することは可能ですか? たとえば、web.xml をマージしたり、各 wars の依存関係を計算したり、.jsp や .class などのファイルをコピーしたりする必要があります。ちなみに、Maven を使用していますが、この問題の解決策を見つけることができませんでした。

4

6 に答える 6

8

djna と ChssPly76 によって言及されたリスクを考慮して、Maven WAR プラグインでオーバーレイを使用することでこれを達成できる可能性があります。これにより、サーブレット マッピングを分離して、URL の衝突などを確実に回避する必要がありますが、うまくいく可能性があります。

基本的に、複数の WAR 依存関係を持つモジュールを作成し、プラグインを使用してそれらを新しいものにマージします。

于 2009-10-07T17:54:16.413 に答える
4

私はcargo-maven2-pluginuberwarmojoがあることを思い出します。私はそれを使用していませんが、競合を避けるように注意する必要がありますが、それは戦争を統合することを目的としていることを理解しています。

ソースのクイックスキャンはmerge descriptor、戦争をマージする方法を決定するためにを定義することを示しています。残念ながら、ドキュメントサイトがなくなったため、これ以上詳細を説明することはできません。

現在の状況を理解するには、 CodehausJiraサイトをチェックしてください。

プラグインを使用するには、次のような構成を指定します。

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven2-plugin</artifactId>
      <version>1.0</version>
      <extensions>true</extensions>
      <configuration>
      <descriptor>merge.xml</descriptor>
      </configuration>
    </plugin>
  </plugins>
</build>
<dependencies>
  <dependency>
    <groupId>project1.groupId</groupId>
    <artifactId>project1</artifactId>
    <type>war</type>
    <version>1.0.0</version>
  </dependency>
  <dependency>
    <groupId>project2.groupId</groupId>
    <artifactId>project2</artifactId>
    <type>war</type>
    <version>1.2.0</version>
  </dependency>
</dependencies> 

(まだmerge.xmlの例を探しています)

于 2009-10-07T17:52:34.123 に答える
1

これを行うことは明らかに可能ですが、最初は 1 つの WAR で作業したほうがよいと思います。WAR コンテンツの後半の「ピック アンド ミックス」は、サポートの悪夢のように聞こえます。

于 2009-10-07T17:48:03.430 に答える
1

EAR は、複数のものを保持するように設計されています。これはあなたにとって可能性がありますか?


編集: まず、重複するリソースがなく (最終的な jar に入れる必要があるのはどれですか?)、すべての jar に互換性がある (各ライブラリのバージョンが 1 つしかないなど) と仮定します。

慎重にマージする必要があるさまざまな XML ファイルを除いて、WEB-INF/ のコンテンツを互いの上にコピーするだけでよいはずです。これを行う最も簡単な方法は、おそらく XSLT スタイル シートを使用することです。これにより、2 つの XML ドキュメントを保持してそれらをマージできます (私の記憶が正しければ、これはタグです)。これを正しく行うことを確実にするために、xml ファイルごとに 1 つ必要になります。JSF ナビゲーションについて考えてみてください。

したがって、私の提案は、リソースの単純なコピーと、手作りの XSLT スタイル シート pr xml 構成ファイルです。

于 2009-10-07T18:25:07.317 に答える
0

一般的に言えば、いいえ、それは不可能です。JSP名が重複している場合はどうなりますか?サーブレット名/マッピング?同じコンテキストリスナーが異なるパラメーターでロードされていますか(Spring / Strutsなどを使用している場合は一般的です...)?あなたはポイントを取得します。

あなたの特定のケースでは、それはあなたの特定の状況に応じて可能かもしれないし、不可能かもしれません。戦争を抽出し、JSP/クラス/ライブラリをコピーするのは簡単です。web.xmlのマージは、要素の順序を維持する必要があるため、もう少し複雑です。「マージされた」web.xmlを手動で定義する方が簡単な場合があります。

于 2009-10-07T17:50:05.363 に答える
-1

One-Jarで何かを動作させることができるかもしれません。

http://one-jar.sourceforge.net/

それはおそらくあなたが望むすべてを行うわけではありません。

于 2009-10-07T17:50:44.220 に答える