jarファイルのサイズを減らす方法はありますか?
未使用の依存関係を減らすツールが必要です。
私は依存関係の管理にMavenを使用しています。
通常、JARファイルにはMavenの意味での依存関係は含まれていません。だからあなたは話している必要があります:
最初の2つのケースでは、依存関係の仕様、またはwarまたはshadeプラグインのビルド記述子のいずれかでそれらを除外することにより、名目上依存するJARを除外できます。IIRC、シェードプラグインを使用すると、特定のパッケージとクラスを除外することもできます。
最後のものは、JARファイルを後処理するために別のツールを必要とする場合があります。未使用のクラスを取り除くことは、難読化者ができることのようなものです。ただし、反射的に使用されるクラスまたはクラス名を削除しないように注意する必要があります。たとえば、DI/IoCフレームワークまたはAOPフレームワークによるものです。
(一般的に、この種のツールは、.classファイルの外部参照によって暗示される依存関係を分析することによってどのクラスが使用されているかを把握しようとします。DI/ IoC / AOPなどは、.classファイルでは明らかではない他の種類の依存関係を導入します。構造。)
プロジェクトが使用する依存関係を知りたい場合は、使用済み/未使用の依存関係を分析するために使用できるmaven-dependency-pluginを確認してください。
次の方法で依存関係を確認してください。
mvn dependency:analyze
または、次のようなdepツリーを見てください。
mvn dependency:tree
または、たとえばEclipse(Indigo)とm2eプラグインを使用して、ide(使用するものによって異なります)を調べることができます。[DependencyHierarchy]タブには、依存関係のツリーが表示されます。推移的な依存関係。
状況によっては、maven-dependency-pluginまたはideプラグインでは分析できないDIフレームワークで使用される依存関係に注意する必要があります。
pack200は、JARサイズを大幅に削減できます。しかし、Mavenで使用するのは難しく、EEコンテナーで使用することは不可能です。
なぜ未使用の依存関係があるのですか?