Есть ли способ уменьшить размер файла jar?Уменьшить размер файла jar
Я хочу инструмент, который уменьшает неиспользуемые зависимости.
Я использую maven для управления зависимостями.
Любая помощь будет оценена по достоинству.
Есть ли способ уменьшить размер файла jar?Уменьшить размер файла jar
Я хочу инструмент, который уменьшает неиспользуемые зависимости.
Я использую maven для управления зависимостями.
Любая помощь будет оценена по достоинству.
Файл JAR обычно не содержит зависимостей в смысле Maven. Таким образом, вы должны говорить о:
В первых двух случаях вы можете оставить номинально зависимые JAR, исключив их либо в спецификации зависимостей, либо в дескрипторе сборки плагина войны или тени. IIRC, плагин для тени также позволяет исключать определенные пакеты и классы.
Для последнего может потребоваться отдельный инструмент для последующей обработки файла JAR. Избавление от неиспользуемых классов - это то, что может сделать обфускатор. Однако вам нужно быть осторожным, чтобы не исключать классы или имена классов, которые используются рефлексивно; например с помощью структуры DI/IoC или структуры AOP.
(В общем, этот инструмент пытается выяснить, какие классы используются при анализе зависимостей, подразумеваемых внешними ссылками .class. DI/IoC/AOP и т. Д. Представляют другие виды зависимости, которые не очевидны в структура файла .class.)
pack200 может значительно уменьшить размер JAR. Но его трудно использовать с Maven и невозможно использовать с контейнером EE.
Почему у вас неиспользуемые зависимости?
У меня есть файл jar, который имеет зависимости с другими банками. Я использую только 1-2 класс на этой банке и хочу уменьшить неиспользованные. –
Если вам нравится знать зависимости, которые использует ваш проект, просто проверьте maven-dependency-plugin, который может использоваться для анализа используемых/неиспользуемых зависимостей.
Проверьте зависимости через:
mvn dependency:analyze
или посмотрите на DEP дерева, как это:
mvn dependency:tree
Или вы посмотрите в ваш язь может (в зависимости от которых одна вы используете) например, с Eclipse (Indigo) и плагином m2e у вас есть вкладка «Иерархия зависимостей», которая показывает дерево зависимостей, в т.ч. транзитивные зависимости.
В некоторой ситуации вы должны быть осторожны в отношении зависимостей, которые используются каркасами DI, которые не могут быть проанализированы плагином maven-dependency или плагинами ide.
Что вы подразумеваете под «неиспользуемыми зависимостями»? В твоем собственном пом или чуме других? – khmarbaise
В моем собственном pom я включил httpclient apache, который составляет около 350kb.in в его файле pom, он имеет зависимости от других файлов. Мне нужен инструмент, который уменьшает неиспользуемые классы из jar и уменьшает файл jar. –
Если httpclient содержит зависимости, которые не используются, вы можете использовать исключение в своем pom, чтобы исключить транзитивные зависимости. – khmarbaise