「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Maven Shade Plugin を使用して Uber Jar を作成し、パッケージの再配置による依存関係の競合を克服するにはどうすればよいですか?

Maven Shade Plugin を使用して Uber Jar を作成し、パッケージの再配置による依存関係の競合を克服するにはどうすればよいですか?

2024 年 11 月 9 日に公開
ブラウズ:530

How can the Maven Shade Plugin be used to create Uber Jars and overcome dependency conflicts through package relocation?

Maven Shade プラグイン: Uber Jar の作成とパッケージの名前変更

Maven Shade プラグインは、開発者が依存関係を含むアーティファクトを 1 つに結合できる強力なツールです。 、総合的な「uber jar」。これにより、デプロイメントと配布のプロセスが大幅に簡素化されます。

Uber Jars について

Maven エコシステムでは、通常、各アーティファクトには独自のクラスとリソースのみが含まれます。プロジェクトがビルドされると、Maven は指定された依存関係管理に基づいて必要なすべての依存関係 (JAR など) を見つけます。

対照的に、uber jar はすべての依存関係を 1 つの大規模な JAR に統合します。これにより、アプリケーションを実行するのに必要な JAR は多数の小さな JAR ではなく、1 つの大きな JAR だけで済むため、実行が簡素化されます。

Uber Jar を作成する理由

Uber jar にはいくつかの利点があります。

  • 実行の簡素化: すべてを 1 つの JAR にパッケージ化することで、実行が容易になり、
  • 配布が簡単: 手動で配布または展開する場合、多くの場合、複数の小さなアーティファクトよりも uber jar の方が便利で管理しやすいです。

再配置(名前変更) パッケージ

uber jar の作成に加えて、Maven Shade Plugin は名前を変更することもできます「再配置」として知られる依存関係パッケージ。この手法により、依存関係の競合を解決し、モジュール性を向上させることができます。

シナリオ例

次のような仮定の状況を考えてみましょう:

  • Foo ライブラリが Bar に依存しているライブラリ バージョン 1.0.
  • Qux プロジェクトは Foo および Bar バージョン 2.0 に依存します (新しいライブラリが必要です)この機能は 1.0 では利用できません)。

これにより、依存関係の競合が発生します。Qux は、コードに Bar 2.0 の機能が必要なため、Bar 1.0 (Foo の依存関係) を使用できません。

これを解決するにはこの問題を解決するには、Foo ライブラリ開発者は Shade プラグインを使用して Bar の使用場所を変更できます:

  • Bar 内のすべてのクラスの名前を変更します1.0 を新しいパッケージ (例: com.bar ではなく com.foo.bar) に追加します。
  • この「再配置された」バーコードを Foo uber jar 内に埋め込みます。

そうすることで, Foo は別の場所に Bar の独自のコピーを持っているため、Qux は Foo の依存関係と競合することなく Bar 2.0 を安全に使用できます。 package.

Maven Shade プラグインを使用する場合

次のような場合には Maven Shade プラグインの使用を検討してください:

  • 展開を簡素化するための uber jar の作成
  • 再配置による依存関係の競合の解決パッケージ。
  • 依存関係を一貫した構造に再パッケージ化することでモジュール性を強化します。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3