【问题标题】:Tool to remove unnecessary dependencies in a Java project删除 Java 项目中不必要的依赖项的工具
【发布时间】:2010-10-16 23:18:17
【问题描述】:

我有一个 Java 项目,目前其库目录中有很多 JAR,这些 JAR 都包含在构建时生成的包中。但是,我知道其中一些库从未在项目中引用。

是否有可以搜索项目中未引用的库的工具?我想一定有某种意义上的东西。

顺便说一句,Eclipse 插件会很棒。

编辑:我选择使用 ClassDep,因为这是唯一有效的建议。但是,我遇到了一些麻烦:请检查this question

【问题讨论】:

  • 很好的问题——我一直想要一个工具来做到这一点。那里一定有一个!
  • sourceforge.net/project/… 确实可以下载
  • 今晚或明天我将分享它:任何分享文件都处于“访问被拒绝”状态;)
  • 如果您在接下来的 10 分钟内留下您的电子邮件,我可以尝试通过quickeo.com/about-quickeo.html 分享它
  • 不,也不行……所以今晚就行了。

标签: java dependencies


【解决方案1】:

ClassPathHelper 可以帮助您。

尤其是“不在类路径视图上”

此视图扫描不在类路径上(但在当前项目下)的 jar。它提供了对可用但不在类路径上的包和类的基本浏览。这在尝试构建类路径时很有帮助,因为您可以快速浏览缺少的类以查看哪些 jar 包含它们。

【讨论】:

  • 我一定是在这里闲逛太多了...当我看到一个 Eclipse 截图时,我立刻想到了“VonC!”
  • TssTss... 还有一个条目要添加到“你知道你什么时候浏览 Stack Overflow 太多了?”问题 (stackoverflow.com/questions/247342) ;)
  • 我很想测试它,但无法下载! sourceforge.net/project/…(说它不可用 - WTF?)
  • 可能是镜像问题。试试我的链接或尝试在不同的镜像之间切换。
【解决方案2】:

我编写了一个小 Eclipse 插件,它从工作区获取现有的java project。对于项目raw classpath 中的每个classpath entry 它removes 它来自项目原始类路径和builds the project。如果没有problem markers 严重错误appear on the project,它将从项目原始类路径中永久删除类路径条目。

我无法共享该插件,但通过上面给出的 api 链接自己实现它并没有太多工作。

【讨论】:

    【解决方案3】:

    您也无法判断您不导入的 JAR 是否是依赖项的必需依赖项。例如,如果您使用 Spring,它会带有自己的依赖项,即使您没有在代码中导入或调用这些类。我不知道 ProGuard - 它会检查这些情况吗?

    【讨论】:

    • 一个合适的依赖跟踪器会做到这一点(我在 1998/9 年写了一个这样做的)。
    【解决方案4】:

    当心一个类是通过 Class.forName() 加载的并且没有在清单文件中指定为依赖项的情况(有一个 Depends-On: 属性,但很多人没有指定它,这会破坏这样的工具,这是我在开发此类工具时存在的祸根)。

    【讨论】:

    • @Matt 不是 100% 确定你的意思……你能详细说明一下吗?
    【解决方案5】:

    ClassDep(来自 Sun,在 Jini 开发工具包中)将为您完成这项工作。

    【讨论】:

    • 它看起来很棒,但看起来使用起来并不简单。我正在发布另一个关于它的问题。
    • 嗨,布赖恩。如果可以,请查看stackoverflow.com/questions/745574/…
    • 上面给出的 ClassDep 链接现在指向一些不知道如何使用它的 Apache River 项目。有人有建议吗?
    【解决方案6】:

    不是 Eclipse 插件,但我相信 ProGuard 的“缩小”功能正是您想要的。

    【讨论】:

    • 我不这么认为:proguard 可以从您的输入 jar 中删除未使用的类,但不会从项目中删除库 jar
    猜你喜欢
    • 2012-06-08
    • 2015-02-23
    • 2017-11-11
    • 2012-03-28
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多