私はMavenのドキュメントを読んでいて、名前に出くわしましたuber-jar
。
uber-jar
意味とその機能/利点は何ですか?
Über
above
またはのドイツ語です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クラスファイルが含まれています。
パクスディアブロの定義は本当に良いです。
さらに、本当にソフトウェアを配布したいが、顧客が自分で依存関係をダウンロードしたくない場合は、uber-jar の提供が非常に役立つ場合があることを考慮してください。欠点として、独自のポリシーで一部のライブラリの使用が許可されていない場合、またはいくつかの追加コンポーネント (slf4j、システムに準拠したライブラリ、アーチ専門のライブラリなど) をバインドする必要がある場合、これはおそらく彼らにとって困難を増すでしょう。 .
あなたはそれを実行することができます:
よりクリーンな解決策は、ライブラリを個別に提供することです。maven-shade-plugin には、そのための記述子が事前に構成されています。これを行うのはそれほど複雑ではありません (maven とそのプラグインを使用)。
最後に、OSGI Bundle を使用するのが本当に良い解決策です。それに関する良いチュートリアルがたくさんあります:)
詳細な構成については、次のトピックをお読みください。