Инструмент для удаления ненужных зависимостей в проекте Java - PullRequest
9 голосов
/ 02 апреля 2009

У меня есть проект Java, который в настоящее время содержит много JAR-файлов в своем каталоге библиотек, которые все включаются в полученный пакет при сборке. Однако я знаю, что некоторые из этих библиотек никогда не упоминаются в проекте.

Существует ли инструмент для поиска библиотек, на которые нет ссылок в проекте? Я думаю, что-то должно быть в этом смысле.

Кстати, плагин Eclipse был бы великолепен.

РЕДАКТИРОВАТЬ: Я решил пойти с ClassDep, потому что это было единственное предложение, которое сработало. Однако у меня возникли некоторые проблемы: проверьте этот вопрос

Ответы [ 6 ]

8 голосов
/ 02 апреля 2009

Остерегайтесь случая, когда класс загружается через Class.forName () и не указывается в качестве зависимости в файле манифеста (для этого есть атрибут Depends-On:, но многие его не указывают , который ломает такие инструменты, как проклятие моего существования, когда я работал над таким инструментом).

4 голосов
/ 02 апреля 2009

ClassDep (от Sun, в комплекте для разработки Jini) сделает это за вас.

2 голосов
/ 02 апреля 2009

ClassPathHelper может помочь вам в этом.

Особенно "Не в Classpath View"

Not on Classpath

В этом представлении выполняется поиск банок, которые не находятся на пути к классам (но находятся в текущем проекте). Он обеспечивает базовый просмотр пакетов и классов, которые доступны, но отсутствуют в пути к классам. Это может быть полезно при попытке создать путь к классам, так как вы можете быстро найти отсутствующие классы, чтобы увидеть, какие файлы содержат их.

1 голос
/ 14 мая 2013

Я написал небольшой плагин Eclipse, который берет существующий Java-проект из рабочей области. Для каждой записи classpath проектов raw classpath он удаляет его из проектов raw classpath и создает проект . Если в проекте нет проблемы маркеров с серьезностью ошибки , это навсегда удаляет запись пути к классам из необработанного пути к классам проектов.

Я не могу поделиться этим плагином, но это не слишком большая работа, чтобы реализовать его самостоятельно со ссылками на API, приведенными выше.

1 голос
/ 02 апреля 2009

Не плагин Eclipse, но я считаю, что функциональность ProGuard - это именно то, что вы ищете.

0 голосов
/ 02 апреля 2009

Вы также не можете сказать, требуются ли JAR-файлы, которые вы не импортируете, зависимости зависимостей. Например, если вы используете Spring, он имеет свои собственные зависимости, даже если вы не импортируете или не вызываете эти классы в своем коде. Я не знаю ProGuard - он проверяет эти случаи?

...