プロジェクトはさまざまなライブラリを使用していました。たとえば、、、a.jar
などb.jar
一部c.jar
の
jarがリファクタリングされ、現在はandd.jar
などです。
必要なのは、インストール内のどのjarが廃止され、削除できるかを自動的に検出する方法です。
これは可能ですか? ab.jar
cd.jar
2 に答える
したがって、LooseJarを使用すると、次を追加することで未使用のJarファイルを検出できます。
-javaagent:loosejar.jar
コマンドラインから(またはEclipseのVMオプションとして)呼び出すときにJavaコマンドに追加します。LooseJarがクラスとそのためのjarが必要であることを認識するために、実行時にクラスを動的にロードするコード行を呼び出す必要があるため、これは技術的に自動ではないと思います。良い方法は、このJavaエージェントを使用して単体テストを呼び出すことです(単体テストのコードカバレッジが良好であると想定しています)
最良の方法は、Mavenを使用することです。依存関係がMavenで定義されている場合は、実行mvn dependency:tree
して必要な情報を取得できます。詳細については、この記事を参照してください。
Mavenを使用しない場合は、おそらくjdependなどのツールを使用する必要があります。ただし、注意してください。このようなツールは、実際にはすべての依存関係を取得できるわけではありません。静的分析のみを使用して、リフレクションによって呼び出されている動的にロードされたクラスまたはAPIへの依存関係を取得することはできません。完全なソリューションは、アプリケーションを実行し、考えられるすべてのシナリオでテストし、クラスローダーによってロードされるクラスを確認する場合にのみ達成できます。100%のテストカバレッジがある場合は、オプション-verbose:class
を使用してアプリケーションを実行してから、アプリケーションに対してすべての単体テストを実行できます。ロードされたすべてのクラスのリストが表示されます。次に、このリストをファイルに配置し、クラスリストを分析してjarリストに変換するシェルスクリプトを記述します。