gpt4 book ai didi

java - 确定功能所需的最少 jar

转载 作者:搜寻专家 更新时间:2023-10-31 20:07:22 25 4
gpt4 key购买 nike

您如何确定框架的某个功能需要哪些 jar 包?例如,为了仅支持依赖注入(inject),在所有可用于 Spring 的 jar 中需要哪些 jar?

最佳答案

有些工具可以通过静态分析代码找出应用程序中实际使用了哪些类,然后创建仅包含这些类的新 JAR,从而创建最少的 JAR。 (我记得使用 Zelix Classmaster 来做到这一点,但有很多选择。)

将这些工具用于像 Spring 这样的 DI 框架的问题包括:

  • 现有的仅跟踪静态依赖项。如果你动态加载类,你必须明确地告诉分析器每一个。一般的 DI 框架,尤其是 Spring 充满了动态加载,包括对应用程序代码不透明的动态加载。

  • 现有工具的工作方式是创建新的输出 JAR,而不是告诉您哪些输入 JAR 未被使用。如果您从闭源代码库创建收缩包装的应用程序,则重新打包 JAR 是可以的,但通常这是不可取的,并且对于某些开源许可证可能存在问题。当然,您不想使用 Spring 执行此操作。

理论上,有人可以编写一个工具来提供帮助。在实践中,该工具需要(例如)知道如何从以注释、XML 表示的 Spring 配置和从高阶配置在运行时创建的 bean 描述符中提取动态类依赖关系(例如,SpringSecurity 就是这样做的)。这是一个很大的问题。即使那样,您也会遇到这样的问题,即由于 JAR 修剪过程遗漏了所需的 JAR,对安装平台上的布线进行的“小”更改可能会失败。

在我看来,更实用的替代方案是:

  • 如果您使用 Maven/Ivy 来管理您的依赖关系,请查看依赖关系图,去除似乎不再需要的依赖关系......然后测试、测试、测试。
  • 手动剔除似乎未使用的 JAR...并测试、​​测试、测试。
  • 别担心。中等程度的未使用 JAR 垃圾可能会增加一到三秒的部署和 Web 应用程序启动时间,但这通常无关紧要。 (但如果确实如此……见上文。)

关于java - 确定功能所需的最少 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com