有没有办法减少jar文件的大小?
我想要一个减少未使用的依赖项的工具。
我使用maven进行依赖管理。
答案 0 :(得分:5)
JAR文件通常不包含Maven意义上的依赖项。所以你一定要谈论:
在前两种情况下,您可以通过在依赖项规范或war或shade插件构建描述符中排除它们来阻止名义上依赖的JAR。 IIRC,shade插件还允许您排除特定的包和类。
最后一个可能需要一个单独的工具来后处理JAR文件。摆脱未使用的类是混淆器可以做的事情。但是,您需要注意不要删除反射使用的类或类名;例如通过DI / IoC框架或AOP框架。
(一般来说,这种工具试图通过分析.class文件外部引用所隐含的依赖关系来确定使用哪些类.DI / IoC / AOP等引入了其他类型的依赖,这些依赖在.class文件结构。)
答案 1 :(得分:3)
如果您想了解项目使用的依赖项,请查看maven-dependency-plugin,它可用于分析已使用/未使用的依赖项。
通过以下方式检查您的依赖项:
mvn dependency:analyze
或者像这样看一下dep树:
mvn dependency:tree
或者您可以查看您的ide(取决于您使用的是哪个),例如Eclipse(Indigo)和m2e插件,您有一个选项卡“Dependency Hierarchy”,它显示了依赖关系树包括。传递依赖。
在某些情况下,您必须小心DI框架使用的依赖关系,这些依赖关系无法通过maven-dependency-plugin或ide插件进行分析。
答案 2 :(得分:1)
pack200可以大幅减少JAR大小。但它很难与Maven一起使用,也不可能与EE容器一起使用。
为什么你有未使用的依赖项?