使用仅使用的类生成最小化的jar

Dan*_*lor 11 java android jar minimize maven

我需要创建用于Android的最小jar的utils库.我正在使用apache commons库中的一些方法(例如IOUtils,StringUtils).然而,每个这样的使用让我导入整个库(commons-lang,commons-io等等),这是在Tomcat下绝对可以接受的(war"s的mamoot大小反正),但对于Android项目绝对不能接受的.

因此,我的目标是将所有使用过的类从依赖项打包到一个jar中 - 但只包含所需的类.我记得有一次与maven插件联系完成了这项任务,不幸的是我不记得它的名字,也没有通过谷歌找到它.

所以,请问,你知道maven插件会做什么样的依赖关系最小化,或者任何独立的工具会做同样的事情吗?

Kir*_*ill 6

您不记得的maven插件可能是Apache Maven Shade Plugin,有minimizeJar选项.正如Andreas_D注意到的那样,这将不包括加载的类,Class.forName因此您需要在配置中明确说明您需要它们.这是我如何让maven在我的单个jar中包含jdbc驱动程序:

<filter>
  <artifact>net.sourceforge.jtds:jtds</artifact>
    <includes>
      <include>**</include>
    </includes>
</filter>
Run Code Online (Sandbox Code Playgroud)


Mer*_*nne 1

对不起,也许我没有清楚地理解问题。混淆器工具(即ProGuard)可以做到这一点,不是吗?它将多个 JAR 打包为一个并剥离未使用的类。如果您不需要混淆/优化(以防止不必要的副作用),那么您可以禁用它们,启用“收缩”阶段。