java-verbose:class
オプションをオンにしてコードを実行してみてください。これにより、各クラスがどこからロードされるか (どの jar ファイル) を示す出力が生成されます。(注: Sun JRE では、これは標準出力に書き込まれます。IBM JRE では、標準エラーに書き込まれると思います。) 出力の例を次に示します。
[Loaded junit.framework.AssertionFailedError from file:/D:/Documents%20and%20Settings/mike/.m2/repository/junit/junit/3.8.2/junit-3.8.2.jar]
[Loaded junit.framework.ComparisonFailure from file:/D:/Documents%20and%20Settings/mike/.m2/repository/junit/junit/3.8.2/junit-3.8.2.jar]
[Loaded org.jmock.core.SelfDescribing from file:/D:/Documents%20and%20Settings/mike/.m2/repository/jmock/jmock/1.2.0/jmock-1.2.0.jar]
[Loaded org.apache.log4j.spi.Configurator from file:/D:/Documents%20and%20Settings/mike/.m2/repository/log4j/log4j/1.2.9/log4j-1.2.9.jar]
[Loaded org.apache.log4j.xml.DOMConfigurator from file:/D:/Documents%20and%20Settings/mike/.m2/repository/log4j/log4j/1.2.9/log4j-1.2.9.jar]
(必要なクラスがロードされるように) プログラムのロジックのほとんどを実行している限り、verbose:class の出力に記載されていない jar は、maven の依存関係として削除できると安全に想定できます。
verbose:class の出力を検索して置換し、たとえば csv に変換してから、それをスプレッドシート プログラムに取り込み、jar ファイルで並べ替え/グループ化することもできます。
まだかなりの手作業が必要ですが、少なくとも開始する場所が得られます!