从jar包中排除未使用的依赖项(Maven)

16

我们有一个小项目,其中有一些重量级的依赖项(例如Spring),但我们只使用其中的一小部分。因此,即使对于我们的两个类服务器,使用全部依赖项打包后得到的JAR文件也有几兆字节,这似乎是不必要的。

有没有一种方法可以将JAR程序集限制为实际使用的(类)文件?

2个回答

11
你可以使用maven-shade-plugin创建一个Jar-with-dependencies(你的项目和依赖项合并到一个大的jar文件中),同时限制添加到该jar文件中的类或包。请参阅包含/排除页面进行参考。
如果你不想手动指定需要包含的内容,也许可以将ProGuard与你的构建集成起来。

我在ProGuard网站上找到了许多有用的参考资料,谢谢!即使Maven无法自动执行此操作(遗憾),还有其他工具可以希望。 - Raphael
6
Maven Shade插件现在可以通过<minimizeJar>true</minimizeJar>配置自动过滤。 - harschware
我刚在一个项目上尝试了一下,它减少了我的jar文件大小36%,无需额外的配置。 - harschware
<minimizeJar>true</minimizeJar> 将我的 JAR 文件大小减少了 50% 以上,但同时也通过丢弃必需的类将 JAR 的功能“减少”到了 0。我猜我得手动排除包... 顺便说一下,虽然我已经作为开发人员工作了近十年,但我并不真的感到失望;-) - zepp133

2

无法仅包括使用的类。但是您可以从依赖项中排除某些依赖以减小JAR文件大小,唯一缺点是您需要知道哪些可以排除哪些不能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接