Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Intellij-maven依赖项同步问题_Java_Maven_Intellij Idea - Fatal编程技术网

Java Intellij-maven依赖项同步问题

Java Intellij-maven依赖项同步问题,java,maven,intellij-idea,Java,Maven,Intellij Idea,我正在使用IntelliJ 13.5.1,我不了解maven同步机制。我们将日志机制从logback切换到log4j。当我从pom中删除logback依赖项时,依赖项从maven中删除,但没有从项目中删除,即使我尝试重新导入maven模块。换句话说,IntelliJ正确同步新库的添加,但不同步删除 这是IntelliJ版本的bug吗 注意:当我从pom中删除依赖项时,jar仍然显示在生成的工件中。IDEA应该删除从pom中删除的任何依赖项,假设它们最初是通过pom添加的,并且仅通过pom添加的。

我正在使用IntelliJ 13.5.1,我不了解maven同步机制。我们将日志机制从logback切换到log4j。当我从pom中删除logback依赖项时,依赖项从maven中删除,但没有从项目中删除,即使我尝试重新导入maven模块。换句话说,IntelliJ正确同步新库的添加,但不同步删除

这是IntelliJ版本的bug吗


注意:当我从pom中删除依赖项时,jar仍然显示在生成的工件中。

IDEA应该删除从pom中删除的任何依赖项,假设它们最初是通过pom添加的,并且仅通过pom添加的。如果手动添加依赖项,它将保持不变。以下是您可以采取的一些措施来解决此问题:

1从maven工具窗口运行重新导入。等待它完成,在右下角的状态栏中观看进度。然后立即运行第二次。虽然我通常不喜欢这样的答案,但有几次我看到IDEA需要连续两次导入才能正确解析修改后的POM

2进入“项目结构”对话框,在左侧的“项目设置”标签下选择“库”。不是“全局库”,而是“库”查找不需要的依赖项。在线搜索应该是有效的。注意:如果依赖项不是以Maven:开头,那么它不是由Maven添加的。选择并删除它。一旦它们全部消失,关闭并重新导入maven项目。看看他们是否回来。如果是这样的话,他们是从某个地方被拉进来的

3您提到您运行了一个依赖关系树,因此这似乎表明maven没有引入依赖关系。要仔细检查这一点并确保绝对正确,我建议您使用Maven Helper插件。从插件设置对话框安装,然后重新启动IDEA。重新启动后,转到pom文件。在底部,您现在将有一个“依赖项分析器”选项卡。选择它。然后选择顶部的所有依赖项。搜索logback。如果找到了,选择它,在右边你会看到一个反向树,它是如何被拉入的。例如,对于hamcrest,我看到以下内容,告诉我junit正在使用它:


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

IDEA应删除从pom中删除的任何依赖项,假设它们最初是通过pom添加的,并且仅通过pom添加。如果手动添加依赖项,它将保持不变。以下是您可以采取的一些措施来解决此问题:

1从maven工具窗口运行重新导入。等待它完成,在右下角的状态栏中观看进度。然后立即运行第二次。虽然我通常不喜欢这样的答案,但有几次我看到IDEA需要连续两次导入才能正确解析修改后的POM

2进入“项目结构”对话框,在左侧的“项目设置”标签下选择“库”。不是“全局库”,而是“库”查找不需要的依赖项。在线搜索应该是有效的。注意:如果依赖项不是以Maven:开头,那么它不是由Maven添加的。选择并删除它。一旦它们全部消失,关闭并重新导入maven项目。看看他们是否回来。如果是这样的话,他们是从某个地方被拉进来的

3您提到您运行了一个依赖关系树,因此这似乎表明maven没有引入依赖关系。要仔细检查这一点并确保绝对正确,我建议您使用Maven Helper插件。从插件设置对话框安装,然后重新启动IDEA。重新启动后,转到pom文件。在底部,您现在将有一个“依赖项分析器”选项卡。选择它。然后选择顶部的所有依赖项。搜索logback。如果找到了,选择它,在右边你会看到一个反向树,它是如何被拉入的。例如,对于hamcrest,我看到以下内容,告诉我junit正在使用它:


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

当您说您删除了依赖项时,您是通过编辑pom.xml文件还是使用右键单击=>删除项目对话框来执行此操作的?请看:我的意思是编辑pom。事实上,我不知道还有什么别的办法。编辑pom似乎更自然。来自@mugbya的评论:可能是其他外部依赖。Exclude logback取决于其他默认情况,但事实并非如此。其他库都不依赖于logback。您确定该库不是由maven添加的吗?尝试使用mvn dependency:tree-dverbose当您说您删除了依赖项时,是通过编辑pom.xml文件还是通过右键单击=>remove projects对话框来完成的?请看:我的意思是编辑pom。事实上,我不知道还有什么别的办法。编辑pom似乎更自然。来自@mugbya的评论:可能是其他外部依赖。排除回登录是相关的
在其他情况下,情况并非如此。其他库都不依赖于logback。您确定该库不是由maven添加的吗?尝试使用mvn dependency:tree-dverbose maven助手插件非常棒!它给我指明了方向。我们对spring boot有一种奇怪的依赖,它依赖于logback。我移除了它并执行了重新导入。现在图书馆不见了。当然,它是由mvn dependency:tree报告的,但是结果太大了,我找不到logback。现在我将输出重定向到一个文件,并设法找到了它。对不起,伙计们,我弄错了。谢谢maven助手插件很棒!它给我指明了方向。我们对spring boot有一种奇怪的依赖,它依赖于logback。我移除了它并执行了重新导入。现在图书馆不见了。当然,它是由mvn dependency:tree报告的,但是结果太大了,我找不到logback。现在我将输出重定向到一个文件,并设法找到了它。对不起,伙计们,我弄错了。谢谢