1

必要なすべての .jar を別の .war/ear に配置して、コードに小さな変更を加えたときに、すべてのライブラリ .jar をサーバーにデプロイする必要がないようにする方法があるかどうか疑問に思っていました。

開発中に変更をテストするたびに (オフサイドの Tomcat サーバーに) 50 MB をアップロードすることは、時間を費やすのに最適な方法ではないためです。

私が SO で読んだほとんどのトピックでは、自己完結型の .war ファイルが必要であると述べています。この場合、1 つの .war ファイルとのみ共有されます。デプロイメント記述子のある種のライブラリ参照でこれが可能かどうかはわかりません。

4

1 に答える 1

0

Java EE Specによると、 .jar はWEB-INF/libWAR ファイル内にデプロイされることになっています。Tomcat クラスローダをハックして外部から直接プルする人もいますが (特に Tomcat 5+ で のサポートが削除された後CATALINA_HOME/shared/lib)、それには明らかな欠点があります。

コードを変更するのではなく、展開プロセスを変更することをお勧めします。実際に「展開されたWAR」展開を実行してappBaseTomcatのドキュメントを参照)、変更されたファイルのみを転送できます。

私はInedoで働いており、多くのユーザーがBuildMasterでこれを行っているのを見てきました。ワークフローは次のようになります。

  1. $/MyApp から最新情報を取得
  2. Ant を実行 (build.xml)
  3. MyApp.war を解凍します
  4. ビルド アーティファクトの作成
  5. Tomcat サービスを停止する
  6. ビルド アーティファクトを SERVER (/path/appBase) にデプロイします。
  7. Tomcat サービスを開始する

最後のステップ (ビルド アーティファクトのデプロイ) では、変更されたファイルのみがデプロイされるため、50 MB のアーティファクトのデプロイにかかる時間が大幅に短縮されます。

于 2013-09-02T15:45:56.620 に答える