web-dev-qa-db-ja.com

ユーバージャーとは何ですか?

私はMavenのドキュメントを読んでいて、「uber-jar」という名前に出会いました。

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

206
Ashay Batwal

Ü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です。これらの依存関係のすべての依存関係も同様です。等々。

306
paxdiablo

Paxdiabloの定義は本当に良いです。

さらに、ソフトウェアを本当に配布したい場合や、顧客が自分で依存関係をダウンロードする必要がないようにしたい場合は、uber-jarを提供することが非常に興味深いことを考慮してください。欠点として、独自のポリシーで一部のライブラリの使用が許可されていない場合、または追加コンポーネント(slf4j、システム準拠ライブラリ、Arch specialiezライブラリなど)をバインドする必要がある場合、これはおそらくそれらの難易度を高めます。

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

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

最後に、本当に良い解決策はOSGIバンドルを使用することです。その上に良いチュートリアルがたくさんあります:)

詳細な設定については、これらのトピックをお読みください:

55
Jean-Rémy Revy

ubar jarは、fat jarとも呼ばれます。つまり、依存関係のあるjar。
uber jarを作成するには、3つの一般的な方法があります。

  1. Unshaded:すべてのJARファイルをアンパックしてから、単一のJARに再パックします。 Javaのデフォルトクラスローダーで動作します。ツール maven-Assembly-plugin
  2. Shaded:unshadedと同じですが、すべての依存関係のすべてのpackagesの名前を変更します(つまり、「shade」)。 Javaのデフォルトクラスローダーで動作します。依存バージョンの衝突(すべてではない)を回避します。ツール maven-shade-plugin
  3. JARのJAR:最終的なJARファイルには、他のJARファイルが埋め込まれています。依存関係のバージョンの衝突を回避します。すべてのリソースファイルが保持されます。ツール: Eclipse JAR File Exporter

詳細

40
Premraj

自己完結型の実行可能Javaアーカイブ。 WildFly Swarm uberjarsの場合、アプリケーション、WildFlyのサポートに必要な部分、依存関係の内部Mavenリポジトリ、およびbootstrap itmへのシムを含む単一の.jarファイルです。 こちらを参照

1
Rasheed