私はMavenのドキュメントを読んでいて、「uber-jar」という名前に出くわしました。
uber-jarの意味とその機能/利点は何ですか?
私はMavenのドキュメントを読んでいて、「uber-jar」という名前に出くわしました。
uber-jarの意味とその機能/利点は何ですか?
回答:
Über
above
or のドイツ語の単語ですover
(実際には英語と同じover
です)。
したがって、このコンテキストでは、uber-jarは「over-jar」であり、単純なJAR (a)から1レベル上にあり、パッケージとそのすべての依存関係の両方を1つのJARファイルに含むものとして定義されます。この名前は、ウルトラオタク、スーパーマン、ハイパースペース、メタデータと同じ「安定版」に由来すると考えられます。これらはすべて、「通常を超えて」という類似の意味を持っています。
利点は、uber-jarには実際には依存関係がないため、uber-jarを配布でき、依存関係が宛先にインストールされているかどうかをまったく気にしないことです。
uber-jar内の独自のもののすべての依存関係も、そのuber-jar内にあります。これらの依存関係のすべての依存関係も同様です。等々。
(a)おそらく、JARが何であるかをJava開発者に説明する必要はありませんが、完全にするために含めます。これはJavaアーカイブであり、基本的には1つのファイルであり、通常、関連するメタデータとリソースとともに多数のJavaクラスファイルが含まれています。
über
そしてover
また、これらの単語のペアで観察することができる古いゲルマンの系統的ボーカルシフトの結果である:geben/give
、leben/live
、haben/have
、heben/heave
と、より多くの。
ubar jarは、ファットjar、つまり依存関係のあるjarとも呼ばれます。
uber jarを作成するには、3つの一般的な方法があります。
Paxdiabloの定義は本当に良いです。
さらに、本当にソフトウェアを配布したいが顧客が自分で依存関係をダウンロードする必要がないようにしたい場合は、uber-jarの配信が時々非常に興味深いことを考慮してください。欠点として、独自のポリシーで一部のライブラリの使用が許可されていない場合、または一部の追加コンポーネント(slf4j、システム準拠のライブラリ、arch specialiezライブラリなど)をバインドする必要がある場合は、おそらくそれらの問題が増加します。 。
あなたはそれを行うことができます:
よりクリーンなソリューションは、ライブラリを個別に提供することです。maven-shade-pluginには、そのための記述子が事前設定されています。これは(mavenとそのプラグインを使用して)実行するのがそれほど難しくありません。
最後に、本当に良い解決策は、OSGIバンドルを使用することです。それに関するたくさんの良いチュートリアルがあります:)
詳細な構成については、次のトピックをお読みください。
スキニー –コードエディターに文字どおりに入力するビットのみが含まれ、その他は含まれません。
Thin –上記のすべてに加えて、アプリのアプリの直接依存関係(dbドライバー、ユーティリティライブラリなど)が含まれます。
Hollow – Thinの逆–アプリの実行に必要なビットのみが含まれ、アプリ自体は含まれません。基本的に、事前にパッケージ化された「アプリサーバー」で、後でアプリをデプロイできます。従来のJava EEアプリサーバーと同じスタイルですが、重要な違いがあります。
脂肪/ユーバー -あなたは文字通り自分の書き込みビットが含まPLUSのアプリの直接の依存関係PLUS「独自に」あなたのアプリケーションを実行するのに必要なビットを。
出典:Dzoneの記事
再投稿:https ://stackoverflow.com/a/57592130/9470346