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

2022-09-04 23:13:18

我需要创建最小的实用程序库,以便在Android中使用。我正在使用apache共享资源库中的一些方法(例如,)。但是,每次这样的用法都会使我导入整个库(等),这在Tomcat下是绝对可以接受的(无论如何,这些都是mamoot大小的),但对于Android项目来说绝对不可接受。IOUtilsStringUtilscommons-langcommons-iowar

因此,我的目标是,将所有使用的类从依赖项打包到一个jar中 - 但仅限于需要的类。我记得有一次与完成该任务的maven插件联系,不幸的是,我不记得它的名字,也无法通过Google找到它。

所以,请问,你知道maven插件可以对依赖关系进行这种最小化,或者任何独立的工具可以做同样的事情吗?


答案 1

你不记得的maven插件可能是Apache Maven Shade插件,有选项。正如Andreas_D注意到的那样,这不包括加载了 的类,因此您需要在配置中隐式说明您需要它们。以下是我如何使maven在我的单个jar中包含jdbc驱动程序:minimizeJarClass.forName

<filter>
  <artifact>net.sourceforge.jtds:jtds</artifact>
    <includes>
      <include>**</include>
    </includes>
</filter>

答案 2

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


推荐