【问题标题】:How to remove Modules from a Intellij Maven Project permanently?如何从 Intellij Maven 项目中永久删除模块?
【发布时间】:2013-11-03 06:58:11
【问题描述】:

我目前正在 IntelliJIdea 12.1.6 Ultimate 中开展一个更大规模的基于 Maven 的项目。大约 5 个月以来,我一直在使用 IntelliJIdea。

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

Intellij 中已删除模块的 pom.xml 似乎被放置在 Settings->Maven->Ignored Files 中。我似乎无法从那里删除它,只能选中或取消选中它。无法再次包含该模块,因为 IntelliJ 会说它仍在 Ignored Files 下。

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

我用谷歌搜索了一段时间,因为它真的很烦人。它成为几个排除模块的问题。我可以从头开始重建 intellij-project,但由于进行了很多 IntelliJ 设置(与问题无关),我宁愿解决这个问题。

感谢任何帮助,我想我一定错过了什么

【问题讨论】:

    标签: java maven intellij-idea dependency-management


    【解决方案1】:

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

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

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

    没想到会有这么大的不同。

    【讨论】:

    • 有时,remove projects 被禁用。右键单击您的项目>打开模块设置,删除您的模块。然后,删除磁盘上的模块内容。
    【解决方案2】:

    这两点对你有用吗:

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

    PS。 Idea 非常擅长按照 Maven 项目维护项目结构。对 pom 进行更改后,您需要重新加载项目。 Idea 还可以自动检测对您的pom.xml 所做的更改并将其应用于项目。要启用此功能,请按 Ctrl+Shift+A,输入“maven auto”,选择“导入”,勾选“自动导入 Maven 项目”;

    【讨论】:

    • 感谢您的建议。重新导入不起作用。当我尝试按照您的建议再次导入项目时,intellij 说“找不到要导入的内容”,我不太确定 intellij 项目文件的位置,该文​​件包含有关当前属于项目的所有模块的信息。您的自动导入提示很有帮助,因为它可以防止在更改 pom 时单击绿色弹出窗口的需要。我想问题是 maven 或 intellij 仍然认为排除的模块是项目的一部分,并尝试从那里使用编译,而不是 repos
    • 要使用 Idea 导入项目,您需要指向包含顶级 pom.xml 的目录。我还有一个猜测,更新答案...
    • 我尝试将项目复制到单独的目录并重新导入。它仍然抛出相同的编译器错误“找不到符号”,因为它找不到依赖模块。对于您的新建议,我更改了 intellij 中的 m2_home,就像在此线程 stackoverflow.com/questions/7053666/… 中提出的那样。可悲的是它没有效果。我还尝试重命名我的本地 mvn 存储库,这会强制从我们的工件重新加载所有依赖项。我想在下一篇文章中阐明项目结构
    • 这意味着您在项目的其他地方拥有这些依赖项,这就是从您的工件存储库中获取它们的原因。这些可以是传递的或显式声明的。 mvn dependency:analyze 会检查这个。 mvn dependency:tree 将显示完整的 dep 树。确保那里没有依赖项。
    • 我的项目中目前有 5 个模块。它们依赖于一些自制的库/模块和几个外部的,这些都在每个模块的 pom.xml 中明确说明。在 intellij 中导入和删除的模块,以及我的一个活动模块所依赖的模块, intellij 找不到,并且 intellij 似乎很困惑,似乎没有尝试从本地或远程 mvn 存储库获取它。当我在 intellij(任何可运行的类)中编译任何东西时,我得到一个编译错误,但当我用 maven 构建时却没有。 maven 没有依赖项。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2010-11-16
      • 2014-09-17
      • 2016-10-25
      • 2015-04-27
      • 1970-01-01
      相关资源
      最近更新 更多