333

私はMavenのドキュメントを読んでいて、名前に出くわしましたuber-jar

uber-jar意味とその機能/利点は何ですか?

4

7 に答える 7

453

Überaboveまたはのドイツ語ですover(実際には英語と同族overです)。

したがって、このコンテキストでは、uber-jarは「over-jar」であり、単純なJAR (a)から1レベル上にあり、パッケージそのすべての依存関係の両方を1つのJARファイルに含むものとして定義されます。この名前は、ウルトラオタク、スーパーマン、ハイパースペース、メタデータと同じ安定版に由来すると考えることができます。これらはすべて、「通常を超えた」という同様の意味を持っています。

利点は、uber-jarには実際には依存関係がないため、依存関係が宛先にインストールされているかどうかをまったく気にせずに、uber-jarを配布できることです。

uber-jar内の独自のもののすべての依存関係、そのuber-jar内にあります。それらの依存関係のすべての依存関係も同様です。等々。


(a) JARがJava開発者に何であるかを説明する必要はないかもしれませんが、完全を期すためにJARを含めます。これはJavaアーカイブであり、基本的には単一のファイルであり、通常、関連するメタデータとリソースとともに多数のJavaクラスファイルが含まれています。

于 2012-08-14T06:46:15.403 に答える
63

パクスディアブロの定義は本当に良いです。

さらに、本当にソフトウェアを配布したいが、顧客が自分で依存関係をダウンロードしたくない場合は、uber-jar の提供が非常に役立つ場合があることを考慮してください。欠点として、独自のポリシーで一部のライブラリの使用が許可されていない場合、またはいくつかの追加コンポーネント (slf4j、システムに準拠したライブラリ、アーチ専門のライブラリなど) をバインドする必要がある場合、これはおそらく彼らにとって困難を増すでしょう。 .

あなたはそれを実行することができます:

よりクリーンな解決策は、ライブラリを個別に提供することです。maven-shade-plugin には、そのための記述子が事前に構成されています。これを行うのはそれほど複雑ではありません (maven とそのプラグインを使用)。

最後に、OSGI Bundle を使用するのが本当に良い解決策です。それに関する良いチュートリアルがたくさんあります:)

詳細な構成については、次のトピックをお読みください。

于 2012-08-14T14:12:15.867 に答える