减少jar文件大小

时间:2012-04-30 11:53:33

标签: java maven jar size

有没有办法减少jar文件的大小?

我想要一个减少未使用的依赖项的工具。

我使用maven进行依赖管理。

3 个答案:

答案 0 :(得分:5)

JAR文件通常不包含Maven意义上的依赖项。所以你一定要谈论:

  • WAR或EAR或类似文件,
  • 通过组合大量JAR文件生成的所谓UberJAR文件;例如使用Maven shade插件,或
  • 依赖于比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容器一起使用。

为什么你有未使用的依赖项?