私はMavenのドキュメントを読んでいて、「uber-jar」という名前に出会いました。
Uber-jarの意味とその機能/利点は何ですか?
Über
は、以前の国歌からの行にあるように、above
またはover
のドイツ語です:Deutschland, Deutschland, über alles
(ドイツ、とりわけドイツ)。
したがって、このコンテキストでは、uber-jarは「over-jar」であり、単純な「jar」から1レベル上にあり、パッケージの両方を含むものとして定義されますandすべての依存関係を単一にJARファイル。この名前は、ウルトラギーク、スーパーマン、ハイパースペース、メタデータと同じ安定版に由来すると考えることができます。これらはすべて、「通常を超えて」という同様の意味を持っています。
利点は、uber-jarを配布でき、uber-jarが実際にはhas依存関係がないため、宛先に依存関係がインストールされているかどうかをまったく気にしないことです。
Uber-jar内の独自のもののすべての依存関係は、そのuber-jar内でalsoです。これらの依存関係のすべての依存関係も同様です。等々。
Paxdiabloの定義は本当に良いです。
さらに、ソフトウェアを本当に配布したい場合や、顧客が自分で依存関係をダウンロードする必要がないようにしたい場合は、uber-jarを提供することが非常に興味深いことを考慮してください。欠点として、独自のポリシーで一部のライブラリの使用が許可されていない場合、または追加コンポーネント(slf4j、システム準拠ライブラリ、Arch specialiezライブラリなど)をバインドする必要がある場合、これはおそらくそれらの難易度を高めます。
あなたはそれを行うことができます:
よりクリーンなソリューションは、3つのライブラリを個別に提供することです。 maven-shade-pluginには、事前に構成された記述子があります。 (mavenとそのプラグインを使用して)これを行うのはそれほど複雑ではありません。
最後に、本当に良い解決策はOSGIバンドルを使用することです。その上に良いチュートリアルがたくさんあります:)
詳細な設定については、これらのトピックをお読みください:
ubar jarは、fat jarとも呼ばれます。つまり、依存関係のあるjar。
uber jarを作成するには、3つの一般的な方法があります。
自己完結型の実行可能Javaアーカイブ。 WildFly Swarm uberjarsの場合、アプリケーション、WildFlyのサポートに必要な部分、依存関係の内部Mavenリポジトリ、およびbootstrap itmへのシムを含む単一の.jarファイルです。 こちらを参照