Java 如何从IntellijMaven项目中永久删除模块?

Java 如何从IntellijMaven项目中永久删除模块?,java,maven,intellij-idea,dependency-management,Java,Maven,Intellij Idea,Dependency Management,我目前正在IntelliJIdea 12.1.6 Ultimate中从事一个更大规模的基于Maven的项目。我在IntelliJIdea工作了大约5个月 包含的模块依赖于另一个模块。直到最近,依赖模块的源代码还是我项目的一部分。由于我从项目中删除了依赖模块,因此每当我试图在没有maven的情况下编译源代码时,都会出现编译错误 Intellij中删除模块的pom.xml似乎被放置在设置->Maven->忽略文件中。我似乎无法从那里删除它,只能选中或取消选中它。由于IntelliJ会说它仍然处于被忽

我目前正在IntelliJIdea 12.1.6 Ultimate中从事一个更大规模的基于Maven的项目。我在IntelliJIdea工作了大约5个月

包含的模块依赖于另一个模块。直到最近,依赖模块的源代码还是我项目的一部分。由于我从项目中删除了依赖模块,因此每当我试图在没有maven的情况下编译源代码时,都会出现编译错误

Intellij中删除模块的pom.xml似乎被放置在设置->Maven->忽略文件中。我似乎无法从那里删除它,只能选中或取消选中它。由于IntelliJ会说它仍然处于被忽略的文件之下,因此无法再次包含该模块

有两种方法允许我再次编译:取消选中忽略文件中的pom,这将在我的项目中再次包含该模块。或者删除依赖模块的源,这样我的项目将从maven存储库加载依赖模块。但是,每当我从svn更新我的项目时,依赖模块的源都会被恢复(我不知道为什么会发生这种情况,因为它不是我项目的一部分),并且循环会重新开始

我在谷歌上搜索了一会儿,因为它真的很烦人。几个被排除的模块出现了问题。我可以从头开始重建intellij项目,但由于做了很多intellij设置(与问题无关),我宁愿解决这个问题


非常感谢您的帮助,我想我一定是错过了什么

请为您做以下两点中的任何一点:

  • NEW您的一个子模块中可能存在指向已删除工件的依赖项。为了确保情况属实,您可能需要重命名$HOME/.m2并重建项目。如果确实如此,只需在POM中搜索依赖项并将其从子模块中删除即可
  • 右键单击父级
    pom.xml
    ->Maven->重新导入
  • 将项目复制到单独的目录中。文件->导入项目->选择新建目录->选择Maven

另外,Idea在按照Maven项目维护项目结构方面表现出色。一旦更改了pom,就需要重新加载项目。Idea还可以自动检测对
pom.xml
所做的更改,并将其应用于项目。要启用此功能,请按Ctrl+Shift+A,键入“maven auto”,选择“导入”,复选框“自动导入maven项目”

一位对maven有更深入了解的同事告诉我答案:

诀窍不是从intellij项目中删除源模块,而是从maven中删除它(在intellij的maven项目选项卡中)。Intellij将要求从Intellij项目中删除源模块,并最终删除它

右键单击maven项目->删除项目


想不到这有这么大的区别。

这可能与OP没有直接关系,但

使用IntelliJ 2016.5,要删除Maven模块及其底层源代码并将其作为子模块从父模块中删除,请转到
项目文件
选项卡,找到不需要的模块并使用三角形符号打开它,然后删除磁盘上代表它的条目


点击模块本身上的
Delete
,只会将其标记为隐藏在IDE中。

谢谢您的建议。重新导入不起作用。当我尝试像您建议的那样再次导入项目时,intellij会说“找不到要导入的内容”,我不太确定intellij的项目文件的位置,该文件包含当前属于项目一部分的所有模块的信息。您的自动导入提示很有帮助,因为它可以防止在POM更改时单击绿色弹出窗口。我想问题是maven或intellij仍然认为排除的模块是项目的一部分,并尝试从那里使用Compile,而不是reposTo导入带有Idea的项目,您需要指向包含顶级
pom.xml
的目录。我还有一个猜测,更新答案…我尝试将项目复制到一个单独的目录并重新导入它。它仍然抛出相同的编译器错误“symbol not found”,因为它找不到依赖模块。对于你的新建议,我改变了intellij中的m2_主页,就像这篇文章中建议的那样。遗憾的是,它没有任何效果。我还尝试重新命名我的本地mvn repo,这迫使所有依赖项从我们的人工工厂重新加载。我想在下一篇文章中阐明项目结构这意味着在项目中的其他地方有这些依赖项,这就是它们从您的artifactoryrepo获取的原因。它们可以是可传递的或显式声明的<代码>mvn相关性:分析将对此进行检查<代码>mvn依赖关系:树将显示完整的dep树。确保没有依赖项。我的项目中目前有5个模块。它们依赖于许多自制的libs/模块和几个外部libs/模块,每个模块的pom.xml中都清楚地说明了这一点。intellij找不到在intellij中导入并从intellij中删除的模块,我的一个活动模块依赖该模块,intellij似乎感到困惑,似乎没有尝试从本地或远程mvn存储库获取该模块。当我在intellij(任何可运行类)中编译任何东西时,我会得到一个编译错误,但当我使用maven构建时,则不会。maven没有依赖项冲突。有时,
remove projects
被禁用。右键单击项目>打开模块设置,删除模块。然后,删除磁盘上的模块内容。