2016-03-23 10 views
1

私は春のブートに慣れていて、春の靴について実行可能な瓶を見ました。 それは言う:春の靴を理解する方法実行可能な瓶について

実行可能jarファイルとJava

Javaは、ネストされたjarファイル(自身が瓶の中に含まれている、すなわち jarファイル)をロードするための任意の標準的な方法を提供していません。自己完結型の アプリケーションを配布する場合は、 に問題があります。

この問題を解決するために、多くの開発者は "uber"ジャーを使用しています。 uber jar は、すべてのjarからすべてのクラスを単一のアーカイブに単純にパッケージ化します。 このアプローチの問題は、アプリケーションで実際に使用しているライブラリを確認することが難しくなることです。複数のjarファイルで同じファイル名が使用されていても(内容は異なる場合) が問題になることがあります。

Spring Bootは異なるアプローチをとり、実際に jarsを直接ネストすることができます。

私はユーバー瓶や脂肪のjarファイルは、いくつかの欠点を持っている場合、i.e.weは、全体ユーバー-jarファイルを再デプロイする必要がありますNoSuchMethodError.Howに関するトラブルに実行することが知りたいのユーバーの瓶から春ブート実行のjar diffentです。それは多くの不利な点を持っているので、なぜ春のブートはこのタイプの瓶を使いますか?

答えて

3

Springブートでは、spring-boot-maven-pluginまたはspring-boot-gradle-pluginを使用します。このプラグインは、JARをすべての依存関係で再パッケージ化します。これは、fat JARと呼ばれます。これはuber JARとは異なります。

スプリングブートパッケージ:JARとしての依存関係を含むJARアーカイブ。 Uber JAR:すべての依存関係のコンパイル済みクラスファイルを含むJARアーカイブ。

春のブートはWARのように埋め込まれています。あなたがJARとしてそれを実行できるように。これは、クラウドネイティブアプリケーションをホストするための最も近代的なアプローチになります。

API非互換バージョンの推移的依存関係を使用している場合、理論的にNoSuchMethodErrorを取得できますが、この問題はWARパッケージにも存在します。

+0

あなたの答えをありがとう。私はとても感謝しています。大量のfat-jarの再展開を解決するには、どのようにスプリングブートが必要かを知りたいのですが、このjarをアップロードするには時間がかかるでしょう。 – eason

+0

とwiki:uber-JARを使用することをお勧めします。彼らは下流の消費者に多くの問題をもたらします。 – eason

+0

以前、私はあなたの質問の大きなポイントを逃した。回答は今更新されました。 – luboskrnac

関連する問題