2017-04-07 5 views
0

他のプロジェクトで使用できるJPAライブラリを構築しています。同じものを出版するための最良の方法は何ですか?私はすべての依存関係を持つ肥沃な瓶として公開するか、クラスだけを公開するべきですか?Mavenライブラリのベストプラクティス

は親切に構築し、共通のユーティリティやライブラリ

答えて

0

を公開するためのビルドプラグインをお勧めします短い: はEVER脂肪ジャーとして何かを公開しないでください。あなたのライブラリには、あなたのライブラリのコンパイル/ランタイム依存性を宣言するpomファイルが必要です。 JPAまたは他のライブラリタイプの公開との違いはありません。 プロジェクトのPOMファイルには、あなたのライブラリーのために必要なランタイムの依存関係を一覧表示する必要があるので、別のプロジェクトでは、あなたは、彼らが推移的依存関係を取得し、依存関係のファイルをjarファイル含む場合:だから長いメカニズム

を公開デフォルトのMaven/Gradleのを使用自動的に。 これと太った瓶の間には大きな違いがあります。あなたのライブラリがGuavaバージョン16を必要としていて、既にGuavaバージョン20を使用している別のプロジェクトにそれを組み込むなら、Maven/Gradleを使用して、使用したいバージョンを選択することができます。あなたがあなたのライブラリーを構築するときに決定されたサードパーティライブラリーの特定のバージョンを含んでいるので、あなたがあなたのjarファイル内に他の人々コードを含め始めるとき、あなたはこの確からしさを失います。私はいくつかのMethodNotFoundErrorを見たことがあります。誰かが古いバージョンのライブラリを別のjarファイルに入れていたからです。開発中、これはライブラリの新しいバージョンを持っており、クラスパスの最初のものであるため動作しますが、実行時にファットjarが最初になり、古いバージョンのクラスが新しいバージョンをシャドウしました。

webapp(WEB-INF/lib)などのフォルダからJVMを読み込むときに、クラスパス内のjarファイルの順序を制御できないことを理解することが重要です。これは、fat jarまたは同じライブラリの複数のバージョンは非常に悪い考えです。デフォルトのソート順はファイルシステムに依存するため、2つのマシンが同じフォルダの内容を異なる順序で読み取ることも可能です。

運が良ければ

+0

詳細な回答ありがとうございます。それは私が決定するのを助けた。 – Vijay

関連する問題