vin*_*uza 1 java intellij-idea maven
我正在使用 IntelliJ 13.5.1,但我不了解 Maven 同步机制。我们将日志机制从 logback 切换到 log4j。当我从 pom 中删除 logback 依赖项时,依赖项已从 maven 中删除,但未从项目中删除,即使我尝试重新导入 maven 模块。换句话说,IntelliJ 正确同步了新库的添加而不是删除。
是这个 IntelliJ 版本的错误吗?
注意:当我从 pom 中删除依赖项时,jar 仍然出现在生成的工件中(爆炸战争)。
IDEA 应该删除从 POM 中删除的所有依赖项,假设它们最初是通过 POM 添加的(并且仅通过 POM 添加)。如果您手动添加了一个依赖项,它会一直存在。您可以执行以下操作来解决此问题:
1)运行重新导入
从 Maven 工具窗口。等待它完成(在右下角的状态栏中观看进度)。然后立即第二次运行它。虽然我通常不喜欢这样的答案,但有几次我看到 IDEA 需要连续双重导入才能正确解析修改后的 POM。
2)进入“项目结构”对话框,在左侧的“项目设置”标签下选择“库”。(不是“全局库”,而只是“库”)查找不需要的依赖项。在线搜索应该有效。(注意:如果依赖项不是以“Maven:”开头,那么它不是由 Maven 添加的)。选择它并删除它。一旦它们都消失了,关闭并重新导入 maven 项目。看看他们是否回来。如果是这样,他们就会从某个地方被拉进来。
3)你提到你运行了一个依赖树,所以这似乎表明 maven 没有引入依赖。要仔细检查并确保绝对确定,我建议您使用Maven Helper插件。从插件设置对话框安装它并重新启动 IDEA。重新启动后,转到您的 pom 文件。在底部,您现在将有一个“依赖关系分析器”选项卡。选择它。然后选择顶部的“所有依赖项”。搜索登录。如果找到了,选择它,在右边你会看到它是如何被拉入的逆树。例如,对于 hamcrest,我看到以下内容,告诉我 junit 正在拉入它。:

对所有 pom 文件执行此操作。