全球战略。
1) 查找在运行时加载的所有类。
2) 类路径中所有可用类的列表。
3)通过创建仅包含您需要的类的 jar 副本来减少您的类路径。
我已经完成了 1 和 2 部分,所以我可以帮助你。
1)找出所有加载的类。您需要 100% 的代码覆盖率(我不是在谈论测试,而是在谈论生产)。所以运行所有可能的场景,这样你的应用程序需要的所有类都将被加载和记录。
要记录加载的类,请尝试几种方法。Reflection , --verbose:class flag , 你也可以了解一下java agent。它允许在运行时修改方法。这是一些 java 代理代码或另一个 java 代理示例的示例
2)要查找jar中所有可用的类,您可以编写一个程序。您需要知道放置应用程序 jar 的所有位置。循环抛出这些罐子(您可以使用ZipFile),循环访问ZipFileEntry条目,并收集所有类。
3) 之后编写一个脚本或程序来重新组装您的应用程序。例如,现在您可以为每个库创建一个新的 jar 文件,并在其中放置只需要的类。
你也可以使用一个工具(同样,你是一个程序员,所以写一个程序),它检查代码的类依赖性。如果类用于编译,您不想删除它们。当我还是学生的时候,我编写了代码 alanyzer,它为类依赖关系构建了一个有向图。
正如@Gokul Nath KP 所指出的,我以前做过。我手动更改 gradle 和 maven 依赖项,一一删除,然后进行完整的回归测试。我花了一周的时间(与数百名开发人员创建的现代世界企业系统相比,我们的应用程序很小)。
所以,要有创意,如果成功,你的项目将被数百万人使用!