Полагаю, что "удалить их по одному и проверить, все ли приложение компилируется и работает" - это не ожидаемый ответ:)
(РЕДАКТИРОВАТЬ: Хотя предложенный выше подход может быть немного автоматизированным, он остается несколько болезненным, и должна быть альтернатива, по крайней мере для зависимостей во время компиляции. После некоторого поиска в Google, я нашел Jar Analyzer который, кажется, хороший инструмент для этой работы, как объяснено в этом сообщении в блоге :
Jar Analyzer сканирует зависимости компиляции, что означает, что он может создать дерево, JAR-файлы которого необходимы для компиляции JAR-файлов, которые необходимы для компиляции этих JAR-файлов и так далее. Вы получаете очень хороший отчет / график, который показывает вам все JAR-файлы и почему они там находятся.
Вы также можете увидеть JAR-файлы, которые не имеют никакого отношения к вашему коду, удалить их и их потомков. В нашей папке libs я обнаружил, что около 20% из 150 файлов JAR в нашей папке libs не использовались во время компиляции, и это были потенциальные файлы JAR, которые необходимо удалить.
Большой недостаток в том, что вы не получаете никаких подсказок о том, что JAR-файлы используются только во время выполнения посредством обнаружения и отражения. И вот тут начинается настоящая работа.
Единственный способ выяснить, используется ли JAR-файл во время выполнения, состоит в том, чтобы вынуть его, запустить приложение и проверить все функциональные возможности. Если у вас есть приложение среднего размера, выполнение 100% -ного регрессионного теста занимает много часов. Так что на практике я закончил много гаданий, быстрых и грязных тестов и расспросил, чтобы выяснить, какие из зависимостей времени выполнения действительно использовались.
Кажется довольно простым в использовании: скачайте, разархивируйте и запустите инструмент в каталоге, содержащем все jar-файлы. Или используйте предоставленную задачу Ant.)