gpt4 book ai didi

java - 如何(安全地)删除 Eclipse 中不必要的 Maven 依赖项?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:46 24 4
gpt4 key购买 nike

我正在 Eclipse 中开发一个 Java 项目,使用 Maven 构建和管理依赖项。该项目分布在 5 个 Eclipse 项目中,其中一个是父 POM。我正在研究基于另一个团队实现的更复杂服务器的服务器实现。因此,我的工作基于他们预先存在的代码和 POM 文件,现在这些 Eclipse 项目的 POM 中有许多不必要的依赖项。

相对来说,我是一个Maven初学者,但是我对这个命令比较熟悉:

mvn dependency:analyze

当我使用 Eclipse Maven 插件运行此命令时,我会得到一长串“未使用的已声明依赖项”,但是当我尝试删除其中的一些时,我的程序会中断,有时会以神秘的方式中断。

是否有普遍接受的最佳实践方法来处理此问题?或者我是否愿意一个接一个地删除这些(可能)未使用的依赖项,确保在删除每个依赖项后没有任何损坏?

最佳答案

您可以尝试在启用 java -verbose:class 选项的情况下运行您的代码。这将生成输出,显示每个类从何处(哪个 jar 文件)加载。 (注意:在 Sun JRE 上,它被写入标准输出;我认为在 IBM JRE 上,它被写入标准错误。)这是一个输出示例:

[Loaded junit.framework.AssertionFailedError from file:/D:/Documents%20and%20Settings/mike/.m2/repository/junit/junit/3.8.2/junit-3.8.2.jar]
[Loaded junit.framework.ComparisonFailure from file:/D:/Documents%20and%20Settings/mike/.m2/repository/junit/junit/3.8.2/junit-3.8.2.jar]
[Loaded org.jmock.core.SelfDescribing from file:/D:/Documents%20and%20Settings/mike/.m2/repository/jmock/jmock/1.2.0/jmock-1.2.0.jar]
[Loaded org.apache.log4j.spi.Configurator from file:/D:/Documents%20and%20Settings/mike/.m2/repository/log4j/log4j/1.2.9/log4j-1.2.9.jar]
[Loaded org.apache.log4j.xml.DOMConfigurator from file:/D:/Documents%20and%20Settings/mike/.m2/repository/log4j/log4j/1.2.9/log4j-1.2.9.jar]

只要您运行完程序的大部分逻辑(以便加载所需的类),您就可以安全地假设 verbose:class 输出中未提及的任何 jar 都可以作为 Maven 依赖项删除。

您还可以对 verbose:class 输出进​​行搜索和替换,例如将其转换为 csv,然后将其放入电子表格程序以按 jar 文件排序/分组。

仍然需要相当多的手动工作,但至少可以让您有个起点!

关于java - 如何(安全地)删除 Eclipse 中不必要的 Maven 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17528288/

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