如何正确删除 Maven 项目中的依赖项

Posted

技术标签:

【中文标题】如何正确删除 Maven 项目中的依赖项【英文标题】:How to properly remove a dependency in a Maven project 【发布时间】:2015-12-08 22:09:18 【问题描述】:

我有一个 Java Maven 项目,其中我在 pom.xml 文件中定义了一些依赖项。最近我决定从 Junit 迁移到 TestNG,所以我从 pom.xml 中删除了 Junit 依赖项并添加了 TestNG 。

我希望看到 Junit jar 库作为流程的一部分从 Maven 依赖项文件夹中消失,但这并没有发生。我仍然可以在依赖项文件夹中看到 jar 文件,并且我的测试用例仍在使用它。

我可以看到 TestNG jar 也在那里,但它没有被使用。我当然可以手动更改它,但这不是我的意图。

我是否做错了什么我错过了哪些额外的步骤可以让我删除旧的依赖项?

【问题讨论】:

你说的是 Eclipse 中的 Maven 吗?从 pom.xml 中删除依赖项以将其从项目中删除就足够了。如果它仍然在这里,那么你做错了什么。你手动添加了一些jar吗? @Bevor 是的,我正在通过 Eclipse 处理 pom 文件。我没有手动添加任何东西。一切都通过 pom 文件。 你有 Eclipse 插件的 Maven 集成吗? 你必须知道TestNG对JUnit本身有依赖......这意味着JUnit不会消失...... 如果您使用 maven 和 Eclipse,您可能需要“更新”maven 项目。在 Eclipse 中:右键单击项目根目录 -> Maven -> Update Project ... 【参考方案1】:

以下适用于全局 .m2 文件夹,可以在其中下载 maven 依赖项,并且对您的 maven 项目是通用的。

.m2 文件夹不会自行清理,因为这些依赖项可能会在另一个项目中使用,因此它错误地假设替换 pom 文件中的依赖项将自动从您的存储库中删除。

您可以查看depedency plugin 并运行以下命令

mvn dependency:purge-local-repository

mvn dependency:purge-local-repository -DreResolve=false

【讨论】:

感谢您的回答。但是,如果每个项目都定义了一个 pom 文件,这个依赖项如何用于另一个项目呢? pom 文件是为每个项目定义的,但 .m2 本地 repo 在您的系统上是全局的,因此所有依赖项都将在那里下载。

以上是关于如何正确删除 Maven 项目中的依赖项的主要内容,如果未能解决你的问题,请参考以下文章

如何找出是不是在 Maven 应用程序中使用了依赖项中的任何类?

mvn 命令用于更新依赖项中的版本和一个使用该依赖项的项目

Maven在模块中定义了额外的范围

为啥有时会跳过 maven 依赖项中的版本号?

可以使Maven构建包含依赖项中的.class文件[重复]

为啥即使我的 maven 依赖项中有第三方依赖项,也只需要 OSGi 容器中的第三方依赖项?