【解决方案】Maven项目导入Idea时pom文件无法识别子模块

【Frontier项目】

Q1

问题描述

从GitHub上clone的Maven结构项目,导入Idea时一直冒红。
导入过程:
Idea -> import project -> import project from external model -> Maven -> finish
这个项目F下有两个模块S1和S2,导入进去之后右侧的Maven只识别了F中的pom.xml文件,pom文件中的下的模块没有被识别

原因讨论

我看了下项目结构发现子模块因为有两种运行模式,于是作者创建了两个pom,但命名方案是pom.xml.x1和pom.xml.x2,这导致IDEA不能识别它为pom.xml也就不能获取子模块的依赖,以及子模块和大项目之间的依赖关系

解决方案

可以手动导入子模块,或点击子模块的pom文件右键add as a Maven Project。这里由于我这个大项目中子模块的命名为pom.xml.x1,我试图copy一个原文件重命名为pom.xml,此时发现依赖关系修复了。但是这个新复制的xml文件中爆出了其他plugin找不到的错误。这个错误在复制之前的文件是没有的。
然后我又找了一下运行的脚本文件,发现里面在运行的时候,当你选入某一模式时,执行将pom.xml.x1复制为pom.xml的指令。也就是说在运行时,依赖关系依据各自的pom文件不会报错。在开发时只是为了区分两种运行模式,改了后缀。这样的话我暂时不改pom.xml.x1的文件了,保留上述红标错误。因为这个项目我太陌生了,再了解了解再决定动作。

反馈思考

这里发现了Maven在导入项目的时候是识别各自的pom.xml文件进行的
单步处理失败时善用reimport和file->invalidate caches/restart功能
另外在下载完项目的时候,先按readme执行一下。这里这个项目在build过后自动生成了相应的pom.xml解决了上述问题

Q2:

问题描述

每个模块或大项目下的.iml文件报红

原因讨论

.iml文件是IDEA创建的管理项目版本的文件,不是原项目自带的。是在你打开这个项目和各个模块的时候自动产生的,记录了项目的结构等。如果安装了版本控制系统如Git,在更新项目时没有及时同步,则.iml报红提示。其实不影响运行

解决方案

关闭version controll system:
file -> settings -> version control -> 选择项目->vcs改为None

你可能感兴趣的:(学习笔记)